Перетаскивание Python - PullRequest
       31

Перетаскивание Python

0 голосов
/ 11 марта 2009

Я работаю над парсером, который открывает файл, читает его и печатает данные в другом файле.

Входной файл определяется из sys.argv [1] для обработки открытия командной строки и перетаскивания (в окнах). Тем не менее, при перетаскивании файла, это дает мне

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 ]

4 голосов
/ 11 марта 2009

Вы используете outfile = open("out.txt", "w") - В первом примере это будет файл c: \ out.txt, который, как я полагаю, является источником вашей ошибки.

0 голосов
/ 11 февраля 2016

Рабочий каталог может находиться в 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])

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...