Python拖放

时间:2009-03-11 10:59:51

标签: python windows drag-and-drop permission-denied ioerror

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

输入文件由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")

2 个答案:

答案 0 :(得分:4)

你使用outfile = open("out.txt", "w") - 在第一个例子中,这将转到c:\ out.txt,我想这是你错误的来源。

答案 1 :(得分:0)

当获取错误时,工作目录可能在C:\Window\System32:IOError:[Errno 2]没有这样的文件或目录:或13:权限被拒绝。

所以你需要先改为脚本或输入文件目录。如:

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

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

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