【问题标题】:Python drag and dropPython 拖放
【发布时间】:2010-10-12 15:42:30
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 即使我从 c:\> 执行,如我的第三个“codepaste”所示?
    • 它会转到当前工作目录的任何目录,这就是为什么如果你先执行 cd temp 就可以了
    • 所以改变工作目录会是一个解决方案吗?我认为可以通过 os 或 sys 模块来完成。
    【解决方案2】:

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

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

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

    如果要切换到输入文件所在的文件夹,试试:

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

    【讨论】:

      猜你喜欢
      • 2013-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-21
      • 2018-11-21
      • 1970-01-01
      • 2010-11-16
      • 2023-03-23
      相关资源
      最近更新 更多