Невозможно записать файл при запуске программы с помощью консоли - PullRequest
1 голос
/ 13 января 2020

Я недавно запустил Python, и я хочу создать программу, которая читает вычисления в файле, выполняет их (используя функцию eval()) и записывает результат в другой файл. Эта программа должна запускаться с консоли.

Я создал программу, которая отлично работает, когда я запускаю ее, дважды щелкнув по ней. Но когда я запускаю программу с консоли, она не записывает результат в файл, и я не получаю никаких ошибок. Я знаю, что вычисление сделано, потому что результат записывается в консоли.

Я пытался запустить программу с расширением .py и скомпилировать ее в исполняемый файл, используя pyinstaller. Они работают с двойным щелчком, но не с консоли.

Вот команды, которые я использовал для запуска программ:

F:\Path\To\App\calculator.exe

C:\Path\To\Python\python.exe F:\Path\To\App\calculator.py

Код, который я использую для чтения, оценки и записи расчет

input = open('calcul.txt', 'r')
output = open('result.txt', 'w')

calcul = input.read()
print(calcul)
print(eval(calcul).toString())
output.write(eval(calcul).toFileString())

input.close()
output.close()

def toString(self):
        number = str (round(self.m_number, 4))
        number_scientific = str(format(self.m_number, ".3E"))
        imprecision = str (round(self.m_imprecision, 4))
        imprecision_scientific = str(format(self.m_imprecision, ".3E"))
        relative_imprecision = str(round(self.m_relative_imprecision * 100, 2))

        return "\t  Number \t\t= " + number + " \t= " + number_scientific + "\n\t  Imprecision \t\t= " + imprecision + " \t= " + imprecision_scientific + "\n\t  Relative Imprecision \t= " + relative_imprecision + "%\n\t"

def toFileString(self):
        return str (round(self.m_number, 4)) + '\n' + str (round(self.m_imprecision, 4))

Когда я запускаю консоль от имени администратора, у меня это:

C:\WINDOWS\system32>F:\Users\Ludovic\Desktop\Apprentissage\C++\Qt\calculator\python_calculator\calculator.exe
Traceback (most recent call last):
  File "calculator.py", line 376, in <module>
    calcul = input.read()
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\WINDOWS\\system32\\calcul.txt'
[26580] Failed to execute script calculator

C:\WINDOWS\system32>C:\Users\Ludovic\AppData\Local\Programs\Python\Python38\python.exe F:\Users\Ludovic\Desktop\Apprentissage\C++\Qt\calculator\python_calculator\calculator.py
Traceback (most recent call last):
  File "F:\Users\Ludovic\Desktop\Apprentissage\C++\Qt\calculator\python_calculator\calculator.py", line 373, in <module>
    input = open('calcul.txt', 'r')
FileNotFoundError: [Errno 2] No such file or directory: 'calcul.txt'

Ответы [ 2 ]

0 голосов
/ 13 января 2020

Может быть, вы не в том каталоге, в котором вы хотели бы написать свой txt-файл для примера: если вы находитесь здесь в cmd: MyFolder\, и вы выполняете свой python файл, записав: python MyFolder\Python_prog\program.py, файл .txt будет написано в MyFolder\ не в MyFolder\Python_prog\ Я не уверен, потому что я никогда не пробовал с python, но у меня были такие же ошибки с JavaScript

0 голосов
/ 13 января 2020

Запустить консоль от имени администратора

Добавить путь к вашим input и output файлам

input = open('your_path_to_file\\calcul.txt', 'r') 
output = open('your_path_to_file\\result.txt', 'w')

Или поместить файлы в папку сценариев и затем называть их так:

import sys

input = open(sys.path[0]+'\\calcul.txt', 'r')
output = open(sys.path[0]+'\\result.txt', 'w')

Обновление

для универсального пути к файлу для .exe и .py попробуйте это (файлы должны находиться в папках .exe и .py)

import sys

if getattr(sys, 'frozen', False):
    application_path = ''
else:
    application_path = sys.argv[0]+'\\'

input = open(application_path+'calcul.txt', 'r')
output = open(application_path+'result.txt', 'w')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...