Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用控制台启动程序时无法写入文件_Python_File_Console - Fatal编程技术网

Python 使用控制台启动程序时无法写入文件

Python 使用控制台启动程序时无法写入文件,python,file,console,Python,File,Console,我最近启动了Python,我想创建一个程序,读取文件中的计算,执行它(使用eval()函数)并将结果写入另一个文件。此程序必须通过控制台启动 我已经创建了这个程序,当我双击它时,它可以完美地工作。但是当我用控制台启动程序时,它不会将结果写入文件中,也不会出现任何错误。我知道计算已经完成,因为结果写在控制台中 我尝试使用扩展名.py运行程序,并使用pyinstaller将其编译为可执行文件。它们通过双击工作,但不是从控制台 以下是我用来运行程序的命令: F:\Path\To\App\calcula

我最近启动了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')
输出=打开('result.txt','w')
calcul=input.read()
打印(计算)
打印(eval(calcul).toString())
output.write(eval(calcul).toFileString())
input.close()
output.close()
def toString(自):
编号=str(四舍五入(自我m_编号,4))
number_scientific=str(格式(self.m_编号,.3E))
不精确=str(圆形(自m_不精确,4))
不精确科学=str(格式(self.m不精确,.3E))
相对_不精确=str(圆形(self.m_相对_不精确*100,2))
返回“\t Number\t\t=“+Number+”\t=“+Number\u scientific+”\n\t不精确性\t\t=“+increcision+”\t=“+increcision\u scientific+”\n\t相对不精确性\t=“+Relative\u不精确性+”%\n\t”
def toFileString(自):
返回str(舍入(self.m_编号,4))+'\n'+str(舍入(self.m_不精确,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'
C:\WINDOWS\system32>F:\Users\Ludovic\Desktop\Apprentissage\C++\Qt\calculator\python\u calculator\calculator.exe
回溯(最近一次呼叫最后一次):
文件“calculator.py”,第376行,在
calcul=input.read()
FileNotFoundError:[Errno 2]没有这样的文件或目录:“C:\\WINDOWS\\system32\\calcul.txt”
[26580]无法执行脚本计算器
C:\WINDOWS\system32>C:\Users\Ludovic\AppData\Local\Programs\Python\Python38\Python.exe F:\Users\Ludovic\Desktop\ApprentMessage\C++\Qt\calculator\Python\U calculator\calculator.py
回溯(最近一次呼叫最后一次):
文件“F:\Users\Ludovic\Desktop\Apprentissage\C++\Qt\calculator\python\u calculator\calculator.py”,第373行,在
输入=打开('calcul.txt','r')
FileNotFoundError:[Errno 2]没有这样的文件或目录:“calcul.txt”

以管理员身份运行控制台

输入
输出
文件添加路径

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文件夹中)


以管理员身份运行控制台

输入
输出
文件添加路径

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文件夹中)


可能您不在希望编写txt文件的目录中例如: 如果您在cmd:
MyFolder\
您可以通过以下方式执行python文件:
python MyFolder\python\u prog\program.py
.txt文件将写入
MyFolder\
而不是
MyFolder\Python\u prog\

我不确定,因为我从未尝试过使用python,但我在使用JavaScript时遇到过类似的错误

可能您不在希望编写txt文件的目录中例如: 如果您在cmd:
MyFolder\
您可以通过以下方式执行python文件:
python MyFolder\python\u prog\program.py
.txt文件将写入
MyFolder\
而不是
MyFolder\Python\u prog\

我不确定,因为我从未尝试过python,但我在JavaScript中也遇到过类似的错误

您是否使用windows cmd作为控制台?如果是这样,请尝试以管理员身份运行它。我使用windows+r打开它,然后在那里显示cmdgot图标?我已经在postChange
input=open('C:\your\u path\u to_file\calcul.txt','r')
output=open('C:\your\u path\u to_file\result.txt','w')
是否使用windows cmd作为控制台?如果是这样,请尝试以管理员身份运行它。我使用windows+r打开它,然后使用那里的cmdgot图标?我已经在postChange
input=open('C:\your\u path\u to\u file\calcul.txt','r')
output=open('C:\your\u path\u to\u file\result.txt','w')
它对.exe不起作用(我得到错误:
FileNotFoundError:[Errno 2]没有这样的文件或目录:'C:\\WINDOWS\\system32\\calcul.txt'
)但另一个可以,但正如我之前所说的,我不想使用绝对路径。好吧,你可以将一个版本的脚本编译成.exe,然后将另一个版本留给cmd exec。事实上,我没有尝试第二个解决方案,因为我不懂。你能不能快速解释一下如何做到这一点?阅读文档总是正确的决定:)之后再看我的更新。它工作得很好,我只是添加以删除
应用程序路径
末尾的程序名。它对.exe不起作用(我得到错误:
FileNotFoundError:[Errno 2]没有这样的文件或目录:'C:\\WINDOWS\\system32\\calcul.txt'
),但另一个文件或目录可以,但正如我前面所说的,我不想使用绝对路径。好吧,您可以将一个版本的脚本编译为.exe,然后将另一个版本留给cmd exec。事实上,我没有尝试第二个解决方案,因为我不理解它。请你快速解释一下怎么做,好吗?阅读文档总是正确的决定:)之后看我的更新。它工作得很好,我只是在
应用程序的末尾添加程序名以删除程序名