Файл питон открывается и сразу закрывается
У меня около 50 ГБ текстового файла, и я проверяю первые несколько символов в каждой строке и записываю их в другие файлы, указанные для этого начального текста.
Например. мой ввод содержит:
Итак, я хочу обработать их в категориях коров, собак и кошек (около 200), поэтому,
Итак, как лучше всего закрыть? В противном случае, если я оставлю его открытым, writefile1=open(writefile,"a") делать правильные вещи?
задан 05 июля '12, 17:07
4 ответы
Вы обязательно должны стараться открывать/закрывать файл как можно реже
Потому что даже по сравнению с чтением/записью файла, открытие/закрытие файла намного дороже
Рассмотрим два блока кода:
Первый берет 0.025s а второй берет 0.309s
ответ дан 10 мая '19, 21:05
Отлично, нужно было протестировать, теперь гораздо больше смысла делать очень мало операторов открытия/закрытия - Ананта
Дополнительные баллы за показательные результаты! - Трой Гросфилд
Использовать with оператор, он автоматически закрывает файлы для вас, выполняет все операции внутри with заблокировать, поэтому он будет держать файлы открытыми для вас и закроет файлы, как только вы выйдете из with блок.
EDIT: Если вы знаете все возможные имена файлов, которые будут использоваться перед компиляцией вашего кода, используйте with это лучший вариант, и если вы этого не сделаете, вам следует использовать свой подход, но вместо закрытия файла вы можете flush данные в файл с помощью writefile1.flush()
ответ дан 04 мар '14, в 12:03
with может стать немного неуклюжим, если он открывает новый файл для каждого префикса во входных данных, и неясно, известны ли все возможные префиксы во время компиляции. - Вубл
@Wooble хорошая мысль! с использованием with означает, что ему нужно знать все имена файлов перед запуском, но если он знает все имена файлов, то в таком случае with это лучший вариант. - Ашвини Чаудхари
Кроме того, с 200 категориями лучшим решением, вероятно, будет список файлов, а не 200 переменных. - Вубл
@Ashwini, спасибо, как отметили другие комментаторы, я не знаю префикс всех. - Ананта
Держите его открытым все время! В противном случае вы сообщаете системе, что вы закончили писать все время, и она может решить сбросить ее на диск вместо буферизации. И по понятным причинам n запись на диск намного дороже, чем 1 запись на диск.
Если вы хотите добавить в файл, а не перезаписывать его, то да, a это правильный режим.
Создан 05 июля '12, 17:07
Операции ввода-вывода занимают слишком много времени. Также откройте и закройте файл.
Гораздо быстрее, если вы откроете оба файла (входной и выходной), используете буфер памяти, скажем, размером 10 МБ для обработки текста, а затем запишите это в выходной файл. Например:
Создан 05 июля '12, 18:07
Я мог бы пойти по этому пути, но я думаю, что для каждого префикса должен быть свой буфер, поэтому запись во все файлы после обработки определенных строк в исходных файлах может быть лучшим вариантом, верно? - Ананта
-1, вы ничего не должны делать в коде своего приложения. Операционные системы достаточно умны, чтобы самостоятельно буферизовать операции чтения/записи, если вы позволите им это сделать (т. е. не закрывать/не открывать файл после каждой операции). Не говоря уже о том, что использование строки для буфера довольно дорого по сравнению со списком. - ВорМастер
@ Ананта Конечно. Это был просто пример, чтобы показать вам, как вы можете реализовать буфер, используя строку и используя файлы ваших объектов файлов в качестве словаря. Но я уверен, что это всего лишь руководство для вас, т.е. вам нужно будет написать свою версию. - Фелипе Тонелло
@ Фелипе, я уже реализовал это, и я также думаю, что буферизация стала немного быстрее, я думаю, что ограничение здесь снова проверяет размер буфера каждый раз . - Ананта
Не тот ответ, который вы ищете? Просмотрите другие вопросы с метками python file-io or задайте свой вопрос.
Не могу ничего прочесть/сообразить. Они мелькнут и всё.
Все его родные файлы "python-exe*" на Pythone3.7 быстро исчезают, нельзя даже увидеть содержимое.
Что посоветуете?
Хочется как-то замедлить их скорость исчезновения с дисплея.
EXE файл завершает работу сразу после запуска
Привет всем, столкнулся с следующей проблемой Написал небольшую програмку на паскале. Чтобы.
Программы закрываются сразу после открытия
В заголовке изложена вся суть проблемы. Надеюсь на вашу помощь:)
Программы закрываются сразу после открытия
Собственно вся проблема написана в заголовке. Как решить данную проблему?
Программы закрываются сразу после открытия
собственно всем доброй ночи. в компьютерах я неофит (образование гуманитарное). проблема.
oleg_357, Когда Вы запускаете файл *.py то запускается интерпретатор python и открывается окно, в которое выводится вся информация, которая предназначена для вывода. Как только код полностью выполняется, так интерпретатор прекращает работу и автоматически закрывается окно вывода.
Для того, что бы не закрывалось окно с необходимой информацией, нужно как Вам правильно подсказали, в конец Вашего кода вставить инструкцию input(). Тогда дойдя до этой инструкции Ваш сценарий не прекратит работу, а будет ждать ввода с клавиатуры. И окно будет оставаться открытым, пока вы не нажмете Enter, что бы Ваш код закончил работу и окно закрылось.
Мне кажется ТС не понимаете вообще как нужно запускать скрипты: открыть cmd и набрать команду python для интерактивной работы или команду python путь\скрипт.py для запуска конкретного скрипта (думаю, никакой IDE у него нет).
Он думает, что скрипты это как exeшник: ткнул мышкой - оно и запустилось.
В windows именно так и происходит. При соответствующих настройках, которые устанавливаются по умолчанию, когда вы устанавливаете Python, и вы их потом не изменяете, достаточно нажать двойным щелчком мыши на иконке файла *.py и windows автоматически запустит Python и питон запустит ваш код. В windows это работает для любых файлов, которые должны запускаться под управлением соответствующих программ. Когда вы нажимаете иконку картинки *.jpg, windows автоматически запускает графический редактор, к которому привязано расширение .jpg и графический редактор открывает графический файл.
С питоном и питоновскими файлами *.py все работает точно так же.
Я давно файлы так не запускал, потому что работаю только через отладчик. Но на всякий случай сейчас еще раз проверил. И все работает именно так как я здесь написал.
Добавлено через 1 минуту
И именно при таком запуске файла, окно схлопывается если не поставить в конце кода input()
Тоже сейчас на всякий случай только что проверил.
Пишу в PyCharm, run - все работает, компилирую с помощью pyinstaller, запускаю - открывается консоль и моментально закрывается. Input() есть в конце, все равно - не помогает.
Компилирую так:
В терминале пишу:
pyinstaller -F app3.py
При этом, когда пробовал разными способами скомпилировать, то что-то получилось с помощью nuitka, скинул другу, у него не запускается.
Игра открывается и моментально закрывается
Не могу понять что именно не так import pygame pygame.init() win =.
Моментально закрывается python файл с tkinter
Слепил вот такое вот подобие кода из кусков кода с интернета. Когда я запускаю это через IDLE в.
Быстро закрывается программа
program Project2; uses SysUtils, Math; const x=9.5; var Otv: Real;
После компиляции консоль не закрывается
Всем доброго время суток. Скачал и установил MinGW на Windows 7. Чтобы каждый раз не возится с.
Здесь гадалок и экстрасенсов нет: запусти скрипт через cmd/sh/bash и скопируй сюда ошибку (да хоть скриншот экрана и/или с телефона фоткай).
Перешел конечно. Ничего не понял.
Добавлено через 29 минут
С этим разобрался, теперь вот такую ошибку пишет:
File "C:\Users\Senya\PycharmProjects\pythonProject3\venv\Include\ app3.py", line 4, in
import speech_recognition as sr
ModuleNotFoundError: No module named 'speech_recognition'
Добавлено через 5 минут
Если открыть exe с помощью cmd, то пишет это:
C:\Users\Senya\PycharmProjects\pythonProject3\venv\Include\d ist>app3.exe
Traceback (most recent call last):
File "pyttsx3\__init__.py", line 20, in init
File "weakref.py", line 134, in __getitem__
KeyError: None
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "app3.py", line 17, in
File "app3.py", line 13, in talk
File "pyttsx3\__init__.py", line 22, in init
File "pyttsx3\engine.py", line 30, in __init__
File "pyttsx3\driver.py", line 50, in __init__
File "importlib\__init__.py", line 127, in import_module
File "", line 1030, in _gcd_import
File "", line 1007, in _find_and_load
File "", line 972, in _find_and_load_unlocked
File "", line 228, in _call_with_frames_removed
File "", line 1030, in _gcd_import
File "", line 1007, in _find_and_load
File "", line 984, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'pyttsx3.drivers'
[4848] Failed to execute script app3
Я только что начал колледж, и мы будем использовать python. Мы действительно ничего не сделали, поэтому я загрузил программу и выполнил некоторые команды печати, и что она.
Когда я запускаю свой .py файл (команда print ), он сразу же закрывается после появления. Я понимаю, почему он это делает – он дал результат, поэтому он сделал то, что ему нужно сделать, но я также понимаю, что вы можете остановить это.
Я просмотрел этот веб-сайт, и ни одно из решений, предоставленных этому вопросу, не работало, либо я их не понимал.
Есть ли простая команда, которую я могу внести в редактор IDLE, который заставит программу приостановиться или что-то еще? Я пробовал input("prompt: ") , как предложил кто-то, и это не имело никакого значения.
Если для этого нет команды, есть ли способ изменить настройки на компьютере, чтобы программы не закрывались автоматически?
В Python 3 добавьте следующее в конец вашего кода:
Это заставит программу ждать ввода пользователя, нажав ENTER, заставляя программу закончить.
Вы можете дважды щелкнуть по файлу script.py в Windows таким образом.
Откройте командную строку cmd и запустите команды Python.
(в Windows идут запускать или искать и набирать cmd)
Он должен выглядеть следующим образом:
Это приведет к выполнению вашего кода в cmd, и он останется открытым.
Однако, чтобы использовать команду python, Python должен быть правильно установлен, поэтому cmd распознает его как команду. Проверьте правильность установки и регистрации переменных для вашей ОС, если этого не произойдет
Единственное, что сработало для меня – аргумент командной строки.
Просто поместите весь свой код python внутри .py файла, а затем запустите следующую команду:
Это означает, что если вы установите переменную -i и запустите свой модуль, тогда python не выйдет из SystemExit.
Подробнее читайте в этой ссылке.
Запустите команду, используя командную строку Windows из основного источника библиотеки Python.
Пример.
Если вам просто нужна задержка
В Python 2.7 добавление этого в конец моего файла py ( if __name__ == '__main__': ) работает:
В зависимости от того, для чего я его использую, или если я делаю то, что другие будут использовать, я обычно просто input("Do eighteen backflips to continue") , если он только для меня, если другие будут использовать, я просто создаю пакетный файл и приостанавливаю после
Я использую вышеуказанное, если будут файлы, переименованные, перемещенные, скопированные и т.д., и мой cmd должен находиться в конкретной папке, чтобы вещи падали там, где я их хочу, иначе – просто
Я думаю, что я слишком поздно, чтобы ответить на этот вопрос, но в любом случае ничего не происходит.
Я уже сталкивался с той же проблемой, и я думаю, что есть два альтернативных решения, которые вы можете выбрать.
from time import *
sleep(10)
- с помощью приглашения (обратите внимание, что я использую python 2.7)
exit_now = raw_input("Do you like to exit now (Y)es (N)o ? ")'
if exit_now.lower() = 'n'
//more processing here
обратите внимание, что приведенные выше являются просто идеями, и если вы хотите использовать любой из них на практике, вам может потребоваться немного подумать о вашей логике приложения.
Ну, у меня такая же проблема,
Он решается добавлением переменной среды.
Пишу небольшие консольные программы на Python'e. Но после вывода данных при помощи print консоль сразу закрывается, и я даже неуспеваю увидеть результат. Что дописать в скрипте чтоб консоль не закрывалась, или хотябы закрывалась через некоторое время?
Python: консоль исчезает сразу после выполнения
Punk_Joker
Пишу небольшие консольные программы на Python'e. Но после вывода данных при помощи print консоль сразу закрывается, и я даже неуспеваю увидеть результат. Что дописать в скрипте чтоб консоль не закрывалась, или хотябы закрывалась через некоторое время?
ну если приложение совсем уж простое то можно помимо raw_input() сделать например так:
cod@coder-desktop ~ $ nano ololo.py
cod@coder-desktop ~ $ python ololo.py > olololo
cod@coder-desktop ~ $ cat ololo
ololo
cod@coder-desktop ~ $
ну это как вариант конечно =) ну и в том случае если у тебя *nix
но raw_input() все= както прощще =)
Python: консоль исчезает сразу после выполнения
Punk_Joker
Пишу небольшие консольные программы на Python'e. Но после вывода данных при помощи print консоль сразу закрывается, и я даже неуспеваю увидеть результат. Что дописать в скрипте чтоб консоль не закрывалась, или хотябы закрывалась через некоторое время?
Просто открой консоль (CMD в Windows или Terminal в UNIX) в той папке, где у тебя есть скрипт.
Напиши в консоли python .py. И после выполения программы консоль никуда не пропадёт.
Python: консоль исчезает сразу после выполнения
Python: консоль исчезает сразу после выполнения
Spectral
Просто открой консоль (CMD в Windows или Terminal в UNIX) в той папке, где у тебя есть скрипт.
Напиши в консоли python .py. И после выполения программы консоль никуда не пропадёт.
можно создать ярлык для cmd.exe, удалив в его свойствах путь к system32
тогда он будет открывать в той папке, где находится
иногда удобнее raw_input()/input()
Читайте также: