Как указать абсолютный путь вместо относительного пути

#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 .