Найти - Пользователи
Полная версия: Открытие текстового файла через консоль Windows (python 2.7)
Начало » Python для новичков » Открытие текстового файла через консоль Windows (python 2.7)
1 2 3
doza_and
py.user.next
Не, файл ищется в текущем каталоге. А текущий каталог - это тот, из которого запущен скрипт
Не слушайте. Это помоему неудачно сформулировано. Попробую разжевать. Есть такое понятие текущая директория. От питона это никак не зависит. Это свойство приложения которое вы используете. Консоль это тоже приложение (python exe Тоже). у каждой консоли есть текущая директория. Если данное приложение запускает другое приложение, то обычно текущая директория (и многие другие переменные среды) наследуются от вызывающего приложения. Вообще вызывающая программа может этому воспрепятствовать. В вызываемой программе можно по своему усмотрению изменить эту директорию. (Посмотреть можно выполнив getcwd() изменить командой chdir() если порождаете процесс то можно ему задать рабочую директорию принудительно например в питоне subprocess.check_call(….,cwd=“c:/xxx”) ). Аналогичные функции есть во всех языках программирования.

Резюме по вашей проблеме. Вы запускаете наверное скрипт из строчки cmd, А она принадлежность самого граф интерфейса windows, у которого текущая директория порождаемого процесса незнамо где. Если указать полный пусть к исполняемому файлу совпадает с местом расположения исполняемого файла т.е. python.exe, Которых в системе может быть установлено несколько штук. Если не указать полный путь то C:\Documents and Settings\user_name. За поведение всех версий форточек не поручусь, может несколько отличаться. Поэтому как вы ни тужтесь файл вы не увидите, если будете запускать приложение из командной строчки windows. И ваши потребители тоже его не увидят.

Помоему путь только один, вам надо переучиваться тому как запускать приложения.

Я считаю что правильный способ запуска приложений под windows - запуск из far, totalcommander, explorer или другого файлового мнеджера у которого текущая директория совпадает с тем что он показывает.

Принятый путь распространения - написать дистрибутив для программы pip. Там можно описать что для вашего скрипта требуются внешние файлы, и дистрибутив поместит их в недра питона, так что они будут доступны приложению (а приложение должно их грузить специальной командой).

Есть еще возможность узнать директорию в которой находится ваш скрипт, ну и например поменять текущую директорию на директорию расположения скрипта. Этот путь не рекомендуется. Скоро вам захочется применять ваш код к разым папкам :), да и ваше приложение скоро может расползтись по разным папкам, станет непонятно где файл искать.

p.s.
Разжевывалось уже тысячу раз. Переходите на unix у его пользователей такие вопросы не возникали ни разу. :)
furienge
doza_and
Большое спасибо за помощь Со временем я еще лучше пойму, что вы написали) Но и сейчас я в целом понял всё) Пока буду работать с cmd и оставлю этот момент, дальше - больше)
py.user.next
furienge
py.user.next
“Не, файл ищется в текущем каталоге. А текущий каталог - это тот, из которого запущен скрипт (с использованием пути до скрипта) или в который был переход через os.chdir().” - поясни пожалуйста.

Ты делаешь “file.txt” в скрипте, всё, закрываешь его и дальше занимаешься запуском.
1. Открываешь cmd.exe .
2. Переходишь в cmd.exe в папку C:\Python27 с помощью команды cd .
3. Чтобы удостовериться, что всё на месте, нужно выполнить dir .
Там ты видишь свой скрипт и файл file.txt .
4. Дальше запускаешь свой скрипт, просто набрав его имя.
5. Если всё работает, то
5.1. Располагаешь свой скрипт и файл file.txt в какой-нибудь папке.
5.2. Делаешь батник, который сначала переходит в эту папку, а потом запускает скрипт в ней.
5.3. Кладёшь этот батник куда надо, хоть на рабочий стол.
ruskiy1
гугли относительные и абсолютные пути.
а по сути если хочешь чтобы твой файл открывался по имени, то твой текстовый файл и файл программы должны быть в одной папке.
Если же ты выполняешь код через командную строку то текущей папкой должна быть папка с файлом (с:\pythonXX)
furienge
py.user.next
Сразу скажу, что изначальная проблема, заданная в теме не решилась. Но её вроде пока проехали.
Вопрос про бат файлы. (Раньше про такие не знал)
Я его создал. Вот код: start “” /min “C:\Windows\System32\cmd.exe” “cd” C:\python27“ ”fhand.py“
Должен сделать все то, что ты написал. Но при запуске этого батника, открывается cmd, потом сразу сворачивается, и когда я её открываю, то там написано: ”Недостаточно памяти для обработки команды."
Попробовал выставить совместимость с windows 7 в свойствах ярлыка. Не помогло.
В чем проблема?
furienge
doza_and
Вроде решил проблему) Открываю питоновский файл в cmd через переход с помощью команды “cd” в папку Питона. И потом просто пишу название файла. Так открывает без адреса.
А вообще почитаю как пользоваться far как вы сказали, много за день отзывов о нем хороших увидел)
Можете помочь с моим вопросом про бат файлы? Он над этим сообщением.
py.user.next
furienge
Вопрос про бат файлы. (Раньше про такие не знал)
Я его создал. Вот код: start “” /min “C:\Windows\System32\cmd.exe” “cd” C:\python27“ ”fhand.py“
Батники ещё до винды были.

Вот такое содержимое должно быть
cd C:\Python27
fhand.py
furienge
py.user.next
Большое спасибо за помощь) Не подскажешь где можно почитать про них? Если они, конечно, нужны.
Просто то, что я гуглил дало мне “start “” /min “C:\Windows\System32\cmd.exe” “cd” C:\python27“ ”fhand.py“” и это сильно сильно отличается от рабочего состояния)
py.user.next
furienge
Не подскажешь где можно почитать про них? Если они, конечно, нужны.
Краткое руководство по DOS
wiki. пакетный файл
wiki. en. пакетный файл
wiki. en. команды DOS

Можешь ещё, находясь в cmd.exe, набрать help. Там она выдаст список топиков. Дальше там набираешь help cd или help for, чтобы прочитать описание команды или конструкции (они часто шире досовских).
furienge
py.user.next
Благодарю)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB