Python - 路径名中的数字问题

时间:2011-03-26 15:11:16

标签: python

我需要打开某个目录中的所有PDF,所以我首先使用os.path生成一个文件路径列表:

filenames = [
    normpath(join(directoryname, filename))
    for filename in listdir(directoryname)
    if filename.lower().endswith('.'+extension)            
    ]

因此该列表中的项目如下所示: d:\\文件夹\\ 2010 \\ file.pdf

然后我想在for循环中打开每个文件:

for file in filenames:
    PdfFileReader(file(file, 'rb'))

但是2010年似乎存在问题,因为我收到了这个错误:

IOError: [Errno 2] No such file or directory: 'D:\\Folder\\x810\\file.pdf'

我想按照

的方式做点什么
PdfFileReader(file(r'D:\\Folder\\2010\\file.pdf', 'rb'))

在上面的例子中,如何将路径作为变量传递? 或者有更好的方法吗?

我正在使用Windows和Python 2.6。

提前致谢!

2 个答案:

答案 0 :(得分:13)

反斜杠在Python使用的C风格字符串中很特殊,就像在C ++,C#和Java中一样。使用双反斜杠说“是的,我的意思是反斜杠”,而不是字符代码\201,或使用不解释反斜杠序列的r''字符串:

'D:\\Folder\\2010\\file.pdf'
r'D:\Folder\2010\file.pdf'

请注意,此问题没有提出变量!正确创建字符串后,它始终保持其值;它不会被重新解释,并且每次将值传递给函数时,反斜杠都会再次引发问题,因此open(myvar)应该看到与print(myvar)完全相同的字符串。< / p>

(我认为在Windows上你也可以使用正斜杠,不需要特别引用:)

'D:/Folder/2010/file.pdf'

答案 1 :(得分:0)

Python会自动将正斜杠转换为Windows路径名中的反斜杠(这是因为运行Python的其他操作系统,包括Linux和Mac,本身使用正斜杠)。