将os.path.join与os.path.getsize一起使用,返回FileNotFoundError

时间:2015-05-06 18:59:13

标签: python python-3.4

与我的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,但它做了同样的事情。

有什么建议吗?感谢。

1 个答案:

答案 0 :(得分:1)

当您在阅读文件时,您需要了解数据的分离方式。在这种情况下,读取文件的每行由\n运算符分隔一个文件名。在使用之前需要将其剥离。

for file_name in file_lines:
    file_name = file_name.strip()
    # rest of for loop