【发布时间】:2016-11-06 14:33:53
【问题描述】:
我的程序中有两个函数,一个将获取用户的路径,另一个将打开该路径中的文件,此函数将打开文件
def pdfparser(filename):
fp = file(filename, 'rb')
当我从另一个函数传递路径时,它返回:
IOError: [Errno 22] invalid mode ('rb') or filename:'C:\\Users\\user\\PycharmProjects\\advisor\\website\\a.PDF
我知道我必须在路径或 (r'path) 中添加双重飞溅 但我的问题是如何将 r' 或双斜杠添加到变量中,因为路径将存储在变量中并传递给另一个函数。我需要类似 s=r'path
请帮忙
【问题讨论】:
-
r 前缀仅用于常量。一旦字符串具有正确的值,就无需再次指定 r 前缀。您确定该文件存在于您的系统上吗?尝试在打开之前打印
filename,然后将其复制/粘贴到 Windows 资源管理器中以查看 Windows 是否找到它。 -
我不确定我是否理解这个问题(IOError 真的完整吗?stacktrace 怎么样),但是除了 os.path.join() 更酷之外,还有什么不适用于
filename = r'C:\Users\user\PycharmProjects\advisor\website\a.PDF。 ..? -
您的错误表明文件名已正确指定;所有的反斜杠都是正确的。您遇到的问题不是可以通过在某处添加前缀
r来解决的。注意r'...'只是一个语法来指定一个字符串值,它不是一个单独的对象类型。它只是告诉 解析器 不要解释\..转义序列。因为这是一个语法概念,所以没有动态对应项。 -
@Jean-François Fabre 它存在我已经尝试过了,但是当我通过 'C:\Users\user\PycharmProjects\advisor\website\a.PDF 它不起作用但是当我添加双斜杠时或 r' 有效,但我的路径是在变量中排序的,所以我如何添加 r' 或双倍空格
-
@Dilettant 我无法将 r' 添加到路径中,因为我的路径在另一个函数的变量中