#python #operating-system #sys
#python #операционная система #sys
Вопрос:
Я пытаюсь выполнить чтение из текстового файла, но таким образом, чтобы я мог передать путь к файлу в командной строке.
Как показано ниже,
path=sys.argv[1]
with open(path,"r") as filestream:
for line in filestream:
currentline=line.split(",")
salt=currentline[0]
X=int(currentline[1])
Однако при указании абсолютного пути я получаю ошибку FileNotFound. Это работает при указании относительного пути.
Есть ли какой-либо способ исправить это?
Комментарии:
1. Можете ли вы привести нам пример того, как вы вызываете этот скрипт с вашим абсолютным путем?
2. Абсолютный путь, скорее всего, плохо отформатирован, чего мы не можем сказать наверняка, потому что вы не предоставляете свои вызовы командной строки
3. Вставьте
traceback
,commandline
который вы запускали, иfile
abspath
пожалуйста
Ответ №1:
Для тестирования вам следует print(f'Openining {path}')
, чтобы увидеть, какой параметр на самом деле находится внутри программы.
Я подозреваю, что вы передаете путь, содержащий пробел. Если вы используете путь, указанный вами в командной строке, с пробелами в нем, то вам нужно будет заключить путь в двойные кавычки в Windows или заменить пробел обратной косой чертой, скажем, в macOS.
Например, на Mac я python3 test.py /Users/preston/Desktop/untitled folder/test.py
успешно использую.
Комментарии:
1. Большое спасибо! Это решило проблему. Проблема была с пробелом.
2.
python test.py "/Users/preston/Desktop/untitled folder/test.py"
будет работать в любой оболочке POSIX, включаяbash
оболочку, используемую по умолчанию в macOS. Кавычки — это просто сокращение для экранирования каждого содержащегося символа обратной косой чертой."foo"
эквивалентноfoo
.