0

我在这里研究一个解析器,它打开一个文件,读取它并在另一个文件中打印数据。

输入文件由 sys.argv[1] 确定以处理命令行打开和拖放(在 Windows 中)。但是,当拖放文件时,它给了我

ioerror 13: Permission denied

查看 sys.argv 包含的内容,我执行了以下操作(来自 cmd.exe)以使其包含相同的内容:

C:\>python C:\test\iotest.py C:\test\iotestin.txt

它失败了。但是,以下工作

C:\>cd test
C:\test>python iotest.py iotestin.txt

对我来说,以上将/应该几乎相同。

  • 为什么会出现权限错误?
  • 如何使 python 能够处理完全指定的路径?(如果这就是问题所在。)
  • 如何启用拖放功能?

哦,如果不清楚,我将 input/txt 文件拖到 python 文件中,而不是相反。作为一名编码员,我总是更喜欢 CLI,但这个软件的未来用户不喜欢,因此我需要让它工作。

虽然非常简单,但这里有一些代码可以重现该问题:

import sys
print sys.argv
raw_input("")

try:
    print "opening",sys.argv[1]
    infile = open(sys.argv[1])
    outfile = open("out.txt", "w")
    raw_input("")
except IndexError:
    print "usage:",sys.argv[0].split("\\")[-1],"FILE"
    raw_input("")
    exit()
except IOError as (errno, strerror):
    print "I/O error({0}): {1}".format(errno, strerror)
    raw_input("")
    exit()

raw_input("done")
4

2 回答 2

4

您使用outfile = open("out.txt", "w")- 在第一个示例中,这将转到 c:\out.txt,我认为这是您的错误的根源。

于 2009-03-11T11:06:00.343 回答
0

出错时工作目录可能在C:\Window\System32:IOError: [Errno 2] No such file or directory: 或 13: Permission denied。

所以你需要先切换到脚本或输入文件目录。如:

os.chdir(os.path.split(sys.argv[0])[0])

如果要更改输入文件的文件夹,请尝试:

os.chdir(os.path.split(sys.argv[1])[0])

于 2016-02-11T08:17:03.710 回答