This question already has answers here:
Using endswith to read list of files doesn't find extension in list
(3个答案)
2年前关闭。
我正在使用linux8。我有一个包含文件的存储库(带有subrepos),并且有一个文件名列表(path / to / file / filename.pdf)。我想检查(使用python),如果这些文件都确实存在,如果不存在,我想知道。因此,我尝试读取列表,使用for循环迭代列表项,并将其与os.path.isfile()结合使用。
例如。我有一个包含以下文件的存储库:
list.txt,
test1.txt和
test2.txt。
list.txt包含文件名(此处为“ test1.txt”和“ test2.txt”)。
给一个
但这是循环...
...给出:
虽然
是
感觉像python区分了两种类型的字符串。谁知道那是哪里来的?
(3个答案)
2年前关闭。
我正在使用linux8。我有一个包含文件的存储库(带有subrepos),并且有一个文件名列表(path / to / file / filename.pdf)。我想检查(使用python),如果这些文件都确实存在,如果不存在,我想知道。因此,我尝试读取列表,使用for循环迭代列表项,并将其与os.path.isfile()结合使用。
例如。我有一个包含以下文件的存储库:
list.txt,
test1.txt和
test2.txt。
list.txt包含文件名(此处为“ test1.txt”和“ test2.txt”)。
os.path.isfile('test1.txt')
给一个
True
但这是循环...
import os
with open('list.txt', 'r') as f:
pathlist=f.readlines()
for path in pathlist:
print(os.path.isfile(path))
...给出:
False
False
虽然
type(path)
是
<type 'str'>
感觉像python区分了两种类型的字符串。谁知道那是哪里来的?
最佳答案
两个可能的问题。
首先,您可能未在您认为的目录中运行。
其次,readlines()
将返回带有换行符的行,并可能附加了回车符。您需要先删除它们,然后再将它们作为路径进行测试。您可以使用rstrip()
从字符串中删除结尾的空格。
for path in pathlist:
print(os.path.isfile(path.rstrip()))