打开的文件,由通过提供的路径指定系统argv在Windows上的Python中?

2021-04-11 23:25:13 发布

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

考虑下面的程序,它的目的是打开sys.argv[1] + "string"引用的一些文件。在

import sys

def searchAndReplacePath(path):

    filesToSearch = [path + "\main\file1.txt",
                     path + "\main\folder\file2.txt"]

    for files in filesToSearch:
        with open(files, 'r') as inFile:
            filedata = inFile.readlines()

if __name__ == "__main__":
    # sys.argv[1] -- Specify which path should be used
    searchAndReplacePath(sys.argv[1])

在执行(Python 3.6,Windows 7)时,我收到一个错误:

^{pr2}$

Python在我的反斜杠上加反斜杠!如果我迭代这个列表并print()列出的每一项,我会得到“单个反斜杠”,所以我真的不知道该怎么做。我读了很多关于raw strings和如何使用:r"path\to\file",但是自从我从系统argv[]我现在真的不知道如何达到同样的效果。在

如何打开Windows上Python中通过sys.argv[]提供的路径指定的文件?在

2条回答
网友
1楼 ·

尝试使用python的os模块: import os files_to_search = [os.path.join(path, 'main\file1.txt') ... ]

网友
2楼 ·

在下面的交互式会话中可以看到此问题:

>>> "\f"
'\x0c'
>>> '\\f'
'\\f'
>>> r'\\f'
'\\\\f'
>>> '\f'
'\x0c'
>>> r'\f'
'\\f'
>>>

如您所见,当解释器打印字符串的repr时,它引用反斜杠来反映Python源代码。'\f'是单个字符,而不是两个。当打印文件名时,解释器使用它的repr()。在

另外,请注意这一区别:

^{pr2}$

您将看到repr()在值周围加了引号,显示它与在Python程序中表示的一样。在

相关问题