Hướng dẫn python count lines of code - python đếm dòng mã

Mô tả dự án

Pygount là một công cụ dòng lệnh để quét các thư mục cho các tệp mã nguồn và đếm số lượng dòng mã nguồn trong đó. Nó tương tự như các công cụ như Sloccount và CLOC nhưng sử dụng gói pygments để phân tích mã nguồn và do đó có thể phân tích bất kỳ ngôn ngữ lập trình nào được hỗ trợ bởi pygments.

Tên này là sự kết hợp của pygments và đếm.

Pygount là nguồn mở và được phân phối theo giấy phép BSD. Mã nguồn có sẵn từ //github.com/roskakori/pygount.

Bắt đầu nhanh

Để cài đặt chạy

$ pip install pygount

Để có được danh sách số lượng dòng cho một dự án được lưu trữ trong một thư mục nhất định chạy chẳng hạn:

$ pygount ~/projects/example

Để giới hạn phân tích ở một số loại tệp được xác định bởi hậu tố của chúng:

$ pygount --suffix=cfg,py,yml  ~/projects/example

Để có được một bản tóm tắt của từng ngôn ngữ lập trình với số lượng và tỷ lệ phần trăm:

$ pygount --format=summary ~/projects/example

Như một ví dụ ở đây là đầu ra tóm tắt cho mã nguồn riêng của Pygount:

    Language      Files    %     Code    %     Comment    %
----------------  -----  ------  ----  ------  -------  ------
Python               19   51.35  1924   72.99      322   86.10
reStructuredText      7   18.92   332   12.59        7    1.87
markdown              3    8.11   327   12.41        1    0.27
Batchfile             1    2.70    24    0.91        1    0.27
YAML                  1    2.70    11    0.42        2    0.53
Makefile              1    2.70     9    0.34        7    1.87
INI                   1    2.70     5    0.19        0    0.00
TOML                  1    2.70     4    0.15        0    0.00
Text                  3    8.11     0    0.00       34    9.09
----------------  -----  ------  ----  ------  -------  ------
Sum total            37          2636              374

Rất nhiều công cụ có thể đăng thông tin SLOC quy trình, ví dụ như trình cắm sloccount cho máy chủ tích hợp liên tục Jenkins.

Một định dạng phổ biến cho các công cụ như vậy là định dạng XML được sử dụng bởi CLOC, mà Pygount cũng hỗ trợ và có thể lưu trữ trong một tệp đầu ra:

$ pygount --format=cloc-xml --out=cloc.xml ~/projects/example

Để có được một mô tả ngắn về tất cả các tùy chọn dòng lệnh có sẵn, hãy sử dụng:

$ pygount --help

Để biết thêm thông tin và ví dụ đọc chương tài liệu về việc sử dụng.

Đóng góp

Để báo cáo lỗi, hãy truy cập trình theo dõi vấn đề.

Trong trường hợp bạn muốn chơi với mã nguồn hoặc cải tiến đóng góp, hãy xem đóng góp.

Lịch sử phiên bản

Xem các thay đổi.

Tải tập tin

Tải xuống tệp cho nền tảng của bạn. Nếu bạn không chắc chắn nên chọn cái nào, hãy tìm hiểu thêm về việc cài đặt các gói.

Phân phối nguồn

Phân phối xây dựng

Đếm các dòng trong một tệp

Tín dụng: Luther Blissett

Vấn đề

Bạn cần tính toán số lượng dòng trong một tệp.

Dung dịch

Cách tiếp cận đơn giản nhất, đối với các tệp có kích thước hợp lý, là đọc tệp dưới dạng danh sách các dòng để số lượng dòng là độ dài của danh sách. Nếu đường dẫn của tệp trên một chuỗi liên kết với biến

$ pygount ~/projects/example
4, thì đó chỉ là:

count = len[open[thefilepath].readlines[  ]]

Đối với một tập tin thực sự lớn, điều này có thể rất chậm hoặc thậm chí không hoạt động. Nếu bạn phải lo lắng về các tệp hài hước, một vòng lặp sử dụng phương thức

$ pygount ~/projects/example
5 luôn hoạt động:

count = 0
for line in open[thefilepath].xreadlines[  ]: count += 1

Ở đây, một sự thay thế hơi khó khăn, nếu bộ hủy dòng là

$ pygount ~/projects/example
6 [hoặc có
$ pygount ~/projects/example
6 dưới dạng phụ, như xảy ra trên Windows]:

count = 0
thefile = open[thefilepath, 'rb']
while 1:
    buffer = thefile.read[8192*1024]
    if not buffer: break
    count += buffer.count['\n']
thefile.close[  ]

Nếu không có đối số

$ pygount ~/projects/example
8 cho
$ pygount ~/projects/example
9, điều này sẽ hoạt động ở bất cứ đâu, nhưng hiệu suất có thể bị ảnh hưởng rất nhiều trên các nền tảng Windows hoặc Macintosh.

Thảo luận

Nếu bạn có một chương trình bên ngoài đếm các dòng tệp, chẳng hạn như

$ pygount --suffix=cfg,py,yml  ~/projects/example
0 trên các nền tảng giống UNIX, tất nhiên bạn có thể chọn sử dụng điều đó [ví dụ: thông qua
$ pygount --suffix=cfg,py,yml  ~/projects/example
1]. Tuy nhiên, nó nói chung đơn giản hơn, nhanh hơn và di động hơn để thực hiện việc đếm dòng trong chương trình của bạn. Bạn có thể dựa vào hầu hết tất cả các tệp văn bản có kích thước hợp lý, để đọc toàn bộ tệp vào bộ nhớ cùng một lúc là khả thi. Đối với tất cả các tệp bình thường như vậy,
$ pygount --suffix=cfg,py,yml  ~/projects/example
2 về kết quả của
$ pygount --suffix=cfg,py,yml  ~/projects/example
3 cung cấp cho bạn số lượng dòng theo cách đơn giản nhất.

Nếu tệp lớn hơn bộ nhớ có sẵn [giả sử, vài trăm megabyte trên một PC điển hình ngày nay], giải pháp đơn giản nhất có thể trở nên chậm, vì hệ điều hành đấu tranh để phù hợp với nội dung tệp vào bộ nhớ ảo. Nó thậm chí có thể thất bại, khi không gian hoán đổi hết và bộ nhớ ảo có thể giúp đỡ nữa. Trên một PC điển hình, với 256 MB RAM và không gian đĩa hầu như không giới hạn, bạn vẫn nên mong đợi các vấn đề nghiêm trọng khi bạn cố gắng đọc vào các tệp bộ nhớ của, giả sử, 1 hoặc 2 GB, tùy thuộc vào hệ điều hành của bạn [một số hệ điều hành là nhiều mong manh hơn những người khác trong việc xử lý các vấn đề bộ nhớ ảo trong các điều kiện tải quá mức như vậy]. Trong trường hợp này, phương thức

$ pygount ~/projects/example
5 của các đối tượng tệp, được giới thiệu trong Python 2.1, nói chung là một cách tốt để xử lý các tệp văn bản từng dòng. Trong Python 2.2, bạn có thể làm tốt hơn nữa, về cả sự rõ ràng và tốc độ, bằng cách lặp trực tiếp trên đối tượng tệp:

$ pygount ~/projects/example
0

Tuy nhiên,

$ pygount ~/projects/example
5 không trả về một chuỗi và cũng không có vòng lặp trực tiếp trên đối tượng tệp, vì vậy bạn có thể chỉ sử dụng
$ pygount --suffix=cfg,py,yml  ~/projects/example
2 trong những trường hợp này để có được số lượng dòng. Thay vào đó, bạn phải lặp và đếm từng dòng, như thể hiện trong giải pháp.

Đếm các ký tự thiết bị đầu cuối dòng trong khi đọc tệp theo byte, trong các khối có kích thước hợp lý, là ý tưởng chính trong cách tiếp cận thứ ba. Nó có lẽ ít trực quan nhất ngay lập tức, và nó không hoàn toàn đa nền tảng, nhưng bạn có thể hy vọng rằng nó nhanh nhất [ví dụ, bằng cách tương tự với Công thức 8.2 trong cuốn sách nấu ăn Perl].Perl Cookbook].

Tuy nhiên, hãy nhớ rằng, trong hầu hết các trường hợp, hiệu suất không thực sự quan trọng đến thế. Khi nó quan trọng, thời gian chìm có thể không phải là những gì mà trực giác của bạn nói với bạn, vì vậy bạn không bao giờ nên tin vào trực giác của mình trong vấn đề này, thay vào đó, luôn luôn là điểm chuẩn và đo lường. Ví dụ: tôi đã lấy một tệp syslog UNIX điển hình có kích thước trung gian, một chút hơn 18 MB văn bản trong 230.000 dòng:

$ pygount ~/projects/example
1

và tôi đã thiết lập tập lệnh khung điểm chuẩn sau,

$ pygount --suffix=cfg,py,yml  ~/projects/example
7:

$ pygount ~/projects/example
2

Đầu tiên, tôi in số lượng dòng thu được bằng tất cả các phương pháp, do đó đảm bảo rằng không có sự bất thường hay lỗi nào [đếm các tác vụ nổi tiếng dễ bị lỗi]. Sau đó, tôi chạy từng phương án 10 lần, dưới sự kiểm soát của hàm thời gian

$ pygount --suffix=cfg,py,yml  ~/projects/example
8 và xem xét kết quả. Họ đây rồi:

$ pygount ~/projects/example
3

Như bạn có thể thấy, sự khác biệt về hiệu suất hầu như không quan trọng: chênh lệch 10% hoặc hơn trong một nhiệm vụ phụ trợ là điều mà người dùng của bạn thậm chí sẽ không bao giờ nhận thấy. Tuy nhiên, cách tiếp cận nhanh nhất [đối với hoàn cảnh cụ thể của tôi, PC rẻ nhưng rất gần đây chạy phân phối Linux phổ biến, cũng như điểm chuẩn cụ thể này] Điều đó đếm các thiết bị kết thúc dòng bằng các khối. Trong thực tế, trừ khi tôi phải lo lắng về các tập tin của hàng trăm megabyte, tôi đã luôn sử dụng phương pháp đơn giản nhất [tức là, cái đầu tiên được trình bày trong công thức này].

Xem thêm

Phần tham chiếu thư viện trên các đối tượng tệp và mô -đun

$ pygount --suffix=cfg,py,yml  ~/projects/example
9; Perl Cookbook Recipe 8.2.Library Reference section on file objects and the
$ pygount --suffix=cfg,py,yml  ~/projects/example
9 module; Perl Cookbook Recipe 8.2.

Làm thế nào để bạn đếm các dòng mã?

Nếu bạn muốn nhận các dòng mã của một tệp, bạn có thể sử dụng CLOC. Chúng tôi đang sử dụng lệnh để lấy các dòng mã của tệp VUE đơn giản. Nó cũng nhận ra rằng nó là một thành phần Vuejs. Chúng ta có thể kiểm tra tất cả các dòng mã trong một tệp hoặc thư mục bằng lệnh CLOC --BY-FILE.cloc . We're using the command to get the lines of codes of a simple Vue file. It also recognized that it is a VueJS component. We can check all of the lines of code in a file or directory by the command cloc --by-file.

Làm cách nào để đếm số lượng dòng trong một tệp văn bản?

Để làm điều này, hãy làm theo các bước dưới đây ...
Chỉnh sửa tệp bạn muốn xem số lượng dòng ..
Đi đến cuối tập tin. Nếu tệp là một tệp lớn, bạn có thể ngay lập tức đi đến cuối tệp bằng cách nhấn Ctrl + End trên bàn phím của mình ..
Khi ở cuối tệp, dòng: Trong thanh trạng thái hiển thị số dòng ..

Làm thế nào để bạn đếm các dòng mã trong Notebook Jupyter?

Dưới đây là cách: Tải xuống Notebook Jupyter dưới dạng tệp .py, sau đó mở tệp .py trong phần mềm như Xcode hoặc bất kỳ IDE nào bạn sử dụng và đếm các dòng mã ở đó. Bạn có thể hiển thị số dòng trong sổ ghi chép Jupyter với CTRL + ML: stackoverflow.com/questions/10979667/download the jupyter notebook as a . py file, and then open the . py file in software like Xcode, or whatever IDE you use, and count the lines of code there. You can show the line numberings in the Jupyter Notebook with CTRL + ML : stackoverflow.com/questions/10979667/…

Làm thế nào để bạn đếm các dòng trong từ và ký tự trong một tệp văn bản trong Python?

Đếm các dòng, từ và chữ cái trong một tệp văn bản..
Bộ đếm của các dòng được tăng thêm 1 ..
Chuỗi được chia thành các từ bằng phương pháp phân chia.Hàm Len đếm số lượng từ trong danh sách các từ.....
Để bỏ qua ký tự dòng mới ['\ n'], chúng tôi xóa nó bằng phương pháp dải ..

Bài Viết Liên Quan

Chủ Đề