isfile不识别文件python 2.5

2024-09-26 17:59:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码:

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文件中大约有5000个文件名,但是isfile只对其中一半返回True。我手动检查了其中一些isfile对于exist返回False。当所有数据都被读入时,转义字符或单个反斜杠应该不会有任何问题,所以我有点困惑。有什么想法吗?下面是csv文件格式的一个示例,以及isfile找不到的pathname的示例。在

csv文件-

^{pr2}$

已创建路径名-

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

谢谢。在


Tags: 文件csvin路径ifpdf文件名dir
1条回答
网友
1楼 · 发布于 2024-09-26 17:59:18

您可以安全地假设os.path.isfile()工作正常。下面是我调试类似问题的过程:

  1. 在我使用之前添加一个print(pathname)。在
  2. 目测输出。有什么可疑的吗?在
  3. 将输出复制到剪贴板->;Win+RcmdReturndir空格"+粘贴到新的命令提示符+"Return
    检查路径是否真的是正确的(发现眼球可能遗漏的轻微错误)。它还有助于验证疯狂的DOS naming conventions,即使在Windows上也仍然强制执行。在
  4. 如果这同样有效,下一步就是检查文件和文件夹权限:确保运行脚本的用户实际上具有查看和读取文件的权限。在

编辑Windows上的路径是。。。很复杂。例如,一个重要的细节是“.”是一个非常非常特殊的字符。名称“a.something very long”在命令提示符中无效,因为它要求文件名中最后一个“.”后最多有三个字符!幸运的是,它没有要求最后一个点之前的名称是at most 8 characters。在

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

相关问题 更多 >

    热门问题