繁体   English   中英

打开文件,由Windows上的python中sys.argv提供的路径指定?

[英]Open files, specified by a path provided via sys.argv in Python on Windows?

考虑下面的程序,该程序的目的是打开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),我收到一个错误:

Traceback (most recent call last):
  File "searchAndReplacePath.py", line 35, in <module>
    searchAndReplacePath(sys.argv[1])
  File "searchAndReplacePath.py", line 19, in searchAndReplacePath
    with open(file, 'r') as inFile:
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\user\\main\\file1.txt'

Python在我的反斜杠中添加了反斜杠! 如果我对列表进行迭代并使用print()表示列表中的每个项目,那么我将得到“单个反斜杠”,因此我真的不知道该怎么做。 我已经阅读了很多有关raw strings以及如何使用它们的信息: r"path\\to\\file" ,但是由于我从sys.argv []中获取了输入信息,所以我现在实际上还不知道如何实现相同的结果。

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

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

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

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

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

另外,请注意以下区别:

>>> print('\"')
"
>>> '\"'
'"'

您将看到repr()在值周围添加引号,并以Python程序中的形式显示该值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM