isfile无法识别文件python 2.5
我有以下代码:isfile无法识别文件python 2.5,python,csv,Python,Csv,我有以下代码: with open('EcoDocs TK pdfs.csv', 'rb') as pdf_in: pdflist = csv.reader(pdf_in, quotechar='"') for row in pdflist: if row[1].endswith(row[2]):#check if file type is appended to file name pathname = ''.join(row[0:2])
with open('EcoDocs TK pdfs.csv', 'rb') as pdf_in:
pdflist = csv.reader(pdf_in, quotechar='"')
for row in pdflist:
if row[1].endswith(row[2]):#check if file type is appended to file name
pathname = ''.join(row[0:2])
else:
pathname = ''.join(row)
if os.path.isfile(pathname):
filehash = md5.md5(file(pathname).read()).hexdigest()
它从csv文件中读取文件路径、文件名和文件类型。然后在连接文件路径和文件名之前,检查文件类型是否附加到文件名。然后在处理文件之前,它会检查文件是否存在。csv文件中大约有5000个文件名,但isfile仅为其中的一半返回True。我已经手动检查了其中一些isfile是否为exist返回False。当所有的数据都被读入时,转义字符或单个反斜杠应该不会有任何问题,所以我有点困惑。有什么想法吗?下面是csv文件格式的示例,以及isfile找不到的一些路径名的示例
csv文件-
c:\2dir\a. dir\d dir\lo dir\fu dir\wdir\5dir\,5_l B.xls,.xls
c:\2dir\a. dir\d dir\lo dir\fu dir\wdir\5dir\,5_l A.pdf,.pdf
已创建路径名-
c:\2dir\a. dir\d dir\lo dir\fu dir\wdir\5dir\5_l B.xls
c:\2dir\a. dir\d dir\lo dir\fu dir\wdir\5dir\5_l A.pdf
谢谢。您可以放心地假设os.path.isfile()
工作正常。以下是我调试此类问题的过程:
在使用之前添加一个打印(路径名)
目测输出。有什么可疑的吗
将输出复制到剪贴板->Win+Rcmd
Returndir
Space“
+粘贴到新命令提示符+”
Return
这将检查路径是否真的正确(发现肉眼会忽略的微小错误)。它还有助于验证即使在Windows上也仍然强制执行的疯狂
如果这也有效,那么下一步是检查文件和文件夹权限:确保运行脚本的用户实际具有查看和读取文件的权限
编辑窗口上的路径是。。。复杂。例如,一个重要的细节是“.”是一个非常非常特殊的角色。名称“a.something very long”在命令提示中无效,因为它要求文件名中最后一个“.”之后最多有三个字符!幸运的是,它不要求最后一个点之前的名称是
结论:您必须非常非常小心地处理Windows上文件名和路径中的“奇怪字符”。唯一安全的字符是。您确实有a。您的磁盘上有dir
?完全是这样写的吗?不,这些文件路径只是示例,因为我的真实数据是商业敏感数据。每个'dir'前面的字符都与我的数据相对应,只是为了允许对任何特殊/转义字符进行评估。感谢您的回复。这与我所遵循的调试过程几乎相同,只是我只是将输出粘贴到windows资源管理器中,这并没有任何问题。我刚刚尝试按照您的建议将其粘贴到cmd中,但出现了错误文件名或扩展名太长
。我不知道文件名有一个最大长度。有没有办法克服/修改windows中的这个限制?@joel:Ah。这意味着您有一个与DOS不兼容的文件名。看看我的编辑。再次感谢你的回复,亚伦。我已经解决了文件名太长的问题,\\?'成功了。使用cmd检查文件,就像你建议的那样,当然有帮助,所以我接受了你的答案。我现在可以继续调试脚本,并将使用您在上次编辑中提供的信息。非常感谢。