isfile无法识别文件python 2.5

时间:2013-09-25 09:38:37

标签: 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])
        else:
            pathname = ''.join(row)
        if os.path.isfile(pathname):
            filehash = md5.md5(file(pathname).read()).hexdigest()

它从csv文件中读取文件路径,文件名和文件类型。然后,在加入文件路径和文件名之前,它会检查文件类型是否附加到文件名。然后,在对文件执行某些操作之前,它会检查文件是否存在。 csv文件中大约有5000个文件名,但isfile只返回大约一半的文件名。我已手动检查其中一些isfile返回False表示存在。在读入所有数据时,转义字符或单个反斜杠不应该有任何问题,所以我有点难过。有任何想法吗?下面是csv文件格式的示例,以及isfile无法找到的某些pathname的示例。

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

感谢。

1 个答案:

答案 0 :(得分:0)

您可以放心地假设os.path.isfile()正常工作。以下是调试此类问题的过程:

  1. 在使用之前添加print(pathname)
  2. 输出眼球。有什么看起来可疑吗?
  3. 将输出复制到剪贴板 - > Win + R cmd 返回 dir 空格 " +粘贴到新命令提示符+ {{ 1}} 返回
    检查路径是否真的正确(发现眼球会错过的轻微错误)。它还有助于验证即使在Windows上仍然执行的疯狂DOS naming conventions
  4. 如果这也有效,下一步是检查文件和文件夹权限:确保运行该脚本的用户实际上有权查看和读取该文件。
  5. 编辑 Windows上的路径很复杂。例如,一个重要的细节就是“。”是一个非常非常特殊的角色。名称“a.something very long”在命令提示符中无效,因为它要求在最后一个“。”后面有最多三个字符。在文件名中!你很幸运,它不要求之前的名称是at most 8 characters

    结论:对于Windows上的文件名和路径中的“奇怪字符”,您必须非常非常小心。唯一安全的字符是listed in this document