34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
text_stats.py - Quick utility to count lines, words, and characters in text files.
|
|
Usage: python text_stats.py <file1> [file2] ...
|
|
"""
|
|
import sys
|
|
|
|
def analyze_text(filepath):
|
|
"""Return (lines, words, chars) for a text file."""
|
|
try:
|
|
with open(filepath, 'r', encoding='utf-8', errors='replace') as f:
|
|
content = f.read()
|
|
lines = content.count('\n') + (1 if content and not content.endswith('\n') else 0)
|
|
lines = len(content.splitlines()) if content.strip() else 0
|
|
words = len(content.split())
|
|
chars = len(content)
|
|
return lines, words, chars
|
|
except Exception as e:
|
|
return None, None, None
|
|
|
|
def main():
|
|
if len(sys.argv) < 2:
|
|
print("Usage: python text_stats.py <file1> [file2] ...")
|
|
sys.exit(1)
|
|
|
|
for filepath in sys.argv[1:]:
|
|
lines, words, chars = analyze_text(filepath)
|
|
if lines is None:
|
|
print(f"{filepath}: error reading file")
|
|
continue
|
|
print(f"{filepath}: {lines} lines, {words} words, {chars} chars")
|
|
|
|
if __name__ == '__main__':
|
|
main() |