Python中如何让被调用脚本的输出保存至自身所在目录?
解决办法
办法一:让File1.py自己控制文件保存路径
问题出在File1.py里用了相对路径'1.txt',它会默认在当前运行的工作目录(也就是Run.py所在的文件夹)创建文件。要让它固定存在自己的目录下,可以通过__file__变量获取自身的路径,再拼接目标文件地址:
修改后的File1.py代码:
import csv import os # 获取当前脚本所在的文件夹 script_folder = os.path.dirname(os.path.abspath(__file__)) # 拼接出1.txt的完整路径 target_file = os.path.join(script_folder, '1.txt') A=1 B=2 C=A+B print(C) with open(target_file, 'w') as f: writer = csv.writer(f) print(C) f.writelines('R'+ '\n') f.write(str(C))
这样不管你从哪个目录调用File1.py,1.txt都会乖乖出现在它自己的文件夹里。
办法二:在Run.py里指定子进程的工作目录
如果不想改File1.py的代码,也可以在调用它的时候,告诉子进程“去File1.py的文件夹里干活”,也就是用subprocess.run的cwd参数指定工作目录:
修改后的Run.py代码:
import subprocess import os # File1.py的完整路径 file1_full_path = r'C:\Users\USER\OneDrive - Technion\Research_Technion\Python_PNM\Sept15_2022\Test\1\File1.py' # 提取它所在的文件夹 file1_folder = os.path.dirname(file1_full_path) # 调用时指定工作目录为file1_folder print(subprocess.run(['python', file1_full_path], cwd=file1_folder))
两种办法怎么选?
- 要是File1.py以后可能被其他脚本调用,选办法一,让它自己管自己的文件路径,更独立。
- 要是不能改File1.py的代码,就用办法二,只改调用它的Run.py就行。
内容的提问来源于stack exchange,提问作者user19977266
相关产品推荐
相关产品推荐

