Знаний, которые Вы получили в предыдущей статье, сейчас достаточно, чтобы изучить открытие файлов в Python. Старайтесь внимательно изучить информацию, приведенную в этой статье и основательно в ней разберитесь. Помните: при работе с файлами в Python легко полностью уничтожить их содержимое!
В этом уроке мы создадим два файла. Первый, text.txt, будет содержать информацию, которую нам необходимо прочитать. А второй, read.py, собственно, и будет выполнять это действие. Если Вам пока ничего не понятно, не волнуйтесь. Скоро все проясниться. А пока создайте текстовый файл text.txt и запишите в него следующие строки:
У попа была собака. Он её любил. Она съела кусок мяса. Он её убил.
В принципе, вы можете заполнить текстовый файл любым другим текстом.
Это никак не отразится на работе нашего скрипта.
Все что нам теперь нужно сделать, это открыть файл и вывести его содержимое на экран. Тем не менее, нам не нужно «жестко программировать» имя открываемого файла text.txt в нашем сценарии. Дело в том, что, возможно, потом нужно будет открыть какой-то другой файл, с другим именем. А для этого нам нужно будет изменить файл read.py. Согласитесь, переписывать скрипт для каждого текстового файла несколько неудобно.
Конвертируем .py в .exe | PyInstaller
Решение состоит в том, чтобы использовать переменную argv или функцию input(), чтобы передать в программу имя открываемого файла. Теперь наберите следующий сценарий и сохраните его под именем read.py. Думаю, не нужно напоминать, что файлы text.txt и read.py, во избежание лишних проблем, должны лежать в одной папке.
1.from sys import argv 2.script, filename = argv 3. 4.txt = open(filename) 5.print (‘Содержимое файла %r’ % filename) 6.print (txt.read()) 7. 8.
print (‘Введите имя файла снова’) 9.file_again = input(‘>’) 10.txt_again = open(file_again) 11.print(txt_again.read())
Давайте кратко рассмотрим, что делает эта программа.
Строки 1-2 уже должны быть вам знакомы по материалам предыдущей статьи. Здесь мы извлекаем из переменной argv имя файла, который будем открывать.
В строке 4 вы видите новую функцию — open(). С её помощью мы открываем указанный файл. В дальнейшем мы рассмотрим все возможности этой команды, а пока просто запомните, что с её помощью мы открываем файл.
Строка 5 выводит небольшой поясняющий текст, а вот в строке 6 начинается самое интересное. Перед этим, мы присвоили функцию open() переменной txt. Теперь мы используем инструкцию read() для этой переменной. Фактически, когда мы пишем команду txt.read(), то говорим интерпретатору следующее: «Эй, возьми txt и выполни для него функцию read() без параметров».
Остальная часть кода аналогична и вы должны без труда прочитать её. Мы проведем её анализ в конце статьи.
Результат работы программы представлен ниже. Обратите внимание, что программу следует выполнять в консоли, а не оболочке IDLE Python.
Python в EXE
Рис. 1 Результат работы скрипта read.py
Если у вас вместо русских букв отображаются «кракозябры», преобразуйте кодировку файла text.txt в ANSI ( меню «Кодировки»- > «Преобразовать в ANSI » в Notepad++).
Практические задания.
- Выше каждой строки напишите комментарий для себя (предваряя его символом «#» ), указывая, что делает эта строка кода.
- Если что-то осталось непонятным, не ленитесь и поищите в Интернете информацию по запросу «Python открытие файлов ».
- Удалите строки 8-11 и выполните скрипт read.py снова.
- Снова выполните сценарий только с помощью функции input(). Подумайте, когда лучше каждый из этих методов передачи данных в программу.
- Запустите интерпретатор Python в командной строке и попытайтесь непосредственно открыть файл в консоли. Изучите, как пользоваться функциями open() и read() в командной оболочке: открывать файлы и читать их содержимое.
- Выполните функцию close() для переменных txt и txt_again. Очень важно закрывать файлы после того, как вы закончили работать с ними.
ЧаВо (Частые Вопросы)
Инструкция txt = open(filename) возвращает содержимое файла?
Нет, это не так. Фактически, происходит работа с объектом. То есть, вы можете читать содержимое файла, перемещаться по его содержимому, но, при этом, файл не является частью программы.
Почему я не могу выполнить задание №5 в командной строке (Терминале)?
Для начала, просто запустите интерпретатор командой python. Должно появиться приглашение типа «>>>». После этого терминал будет готов принимать команды Python. Если вылезает сообщение, что команда python не является внутренней или внешней командой , следует указать путь к папке с интерпретатором Python в переменной % path%. После этого можно работать с интерпретатором так же, как в IDLE.
Для выхода из этого режима наберите команду quit() и нажмите Enter.
Что делает строка from sys import argv?
На текущий момент, вы уже должны знать, что sys – это пакет функций и команд. Нам нужна только возможность использования переменной argv. Поэтому мы импортируем эту возможность в нашу программу.
Я прямо указал имя открываемого файла в команде script, text.txt = argv, но программа не работает.
Команда набрана неправильно. Следует использовать именно такое написание, которое указано в приведенной программе. Не нужно прямо указывать имена открываемых файлов — интерпретатор Python сам это сделает.
Почему не возникает ошибка из-за того что мы открываем один файл два раза?
Python допускает множественное открытие файла. Иногда, это даже необходимо.
Источник: writegamepython.wordpress.com
Как запустить из python внешний файл python
Каким образом можно вызвать выполнение другой программы python (из файла .py) во время выполнения текущей?
Отслеживать
46.1k 16 16 золотых знаков 54 54 серебряных знака 96 96 бронзовых знаков
задан 21 мая 2020 в 10:52
71 1 1 золотой знак 1 1 серебряный знак 2 2 бронзовых знака
import os os.open()
21 мая 2020 в 10:53
пишет open() missing required argument ‘flags’ (pos 2)
21 мая 2020 в 11:15
А добавить недостающий аргумент что мешает?
18 окт 2020 в 10:41
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Можно еще вот так
import os os.system(‘python путь_к_файлу.py’)
Отслеживать
ответ дан 20 авг 2020 в 23:46
5,463 2 2 золотых знака 9 9 серебряных знаков 32 32 бронзовых знака
Наверное вам нужно это:
import os os.startfile(r’указывайте здесь путь к файлу’) #пример os.startfile(r’C:Program FilesNotepad++notepad++.exe’)
Лучше вместе с меткой python 3.x указывайте метку python
Отслеживать
ответ дан 21 мая 2020 в 11:15
Ivan datlov Ivan datlov
110 8 8 бронзовых знаков
os.startfile(») или os.system(‘»Каталог1″»Каталог2″»Нужный файл»‘)
Но если вторая программа — тоже .py файл, то есть ограничения. Это будет работать, только если в системе установлена ассоциация: запускать .py файлы с помощью интерепретатора, а не открывать их в каком-нибудь текстовом редакторе.
Лучше будет, если ты скомпилируешь .py файл в .exe с помощью pyinstaller (у новичков могут возникнуть трудности при использовании) или cxfreeze (очень удобное управление, но проблемы с тем, чтобы найти этот инструмент и установить). и запустишь уже скомпилированный файл.
PS: компиляция приложений, использующих tkinter, полна нюансов (какие библиотеки положить с .exe — фалом, что установить, прописать и т.п.)
Источник: ru.stackoverflow.com
Как запустить программу написанную на python?
Антон Федорян, python не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
patashok, полный путь до python пропиши. А вообще в гугле много ответов на этот вопрос
значит не указаны пути к интерпретатору python в переменной окружения %PATH%, либо можно использовать полный путь к интепретатору, например C:Python34python.exe программа.py
petrov_ruslan, дай пожалуйста нормальный ответ. Я на форум иду не для того чтобы меня в гугл посылали
patashok, выше уже дали подробный ответ. На форум надо идти когда гугл не помог.
Антон Федорян, у меня после C: написано Users User и это дерьмо не стирается
petrov_ruslan, я всегда так делаю
patashok, это и не будет стираться. Надо прописать полный путь после C:UsersUser> C:»путь к интерпретатору»python.exe
как узнать путь к интерпретатору?
patashok, можешь удалить python через «программы и компоненты», скачать заново и установить, обязательно поставить галочку «добавить в path» или как-то так. Тогда можно будет через консоль запускать, как выше уже написали.
python не является внутренней или внешней командой, исполняемой программой или пакетным файлом.
в переменные среды PATH и PYTHONPATH допишите путь к интерпретатору python например у меня так C:Program Files (x86)Python36-32
открываете командную строку, переходите в директорию где находиться «name_file».py и команда python «name_file».py открывает ваш файл, результат выводит в консоль
Источник: qna.habr.com