与我的last question一起,我打算在一个列表中打印文件名及其旁边的大小。基本上我正在读取一个文件中的文件名(由用户添加),取文件名并将其放在工作目录的路径中逐个打印它的大小,但是我遇到了以下问题块:
print("\n--- Stats ---\n")
with open('userdata/addedfiles', 'r') as read_files:
file_lines = read_files.readlines()
# get path for each file and find in trackedfiles
# use path to get size
print(len(file_lines), "files\n")
for file_name in file_lines:
# the actual files should be in the same working directory
cwd = os.getcwd()
fpath = os.path.join(cwd, file_name)
fsize = os.path.getsize(fpath)
print(file_name.strip(), "-- size:", fsize)
返回此错误:
tolbiac wpm-public → ./main.py --filestatus
--- Stats ---
1 files
Traceback (most recent call last):
File "./main.py", line 332, in <module>
main()
File "./main.py", line 323, in main
parseargs()
File "./main.py", line 317, in parseargs
tracking()
File "./main.py", line 204, in tracking
fsize = os.path.getsize(fpath)
File "/usr/lib/python3.4/genericpath.py", line 50, in getsize
return os.stat(filename).st_size
FileNotFoundError: [Errno 2] No such file or directory: '/home/tolbiac/code/wpm-public/file.txt\n'
tolbiac wpm-public →
所以看起来有些事情正在向file_name的末尾添加一个\ n,我不确定是否在getsize模块中使用了这些东西,我尝试使用os.stat,但它做了同样的事情。
有什么建议吗?感谢。
答案 0 :(得分:1)
当您在阅读文件时,您需要了解数据的分离方式。在这种情况下,读取文件的每行由\n
运算符分隔一个文件名。在使用之前需要将其剥离。
for file_name in file_lines:
file_name = file_name.strip()
# rest of for loop