2017-10-28 137 views
-1

例子:我想文件从主Python文件跑去从自己的目录运行

我有我的主文件,main.py与此代码:

import os 
os.popen("start folder/subfile.py") 

然后我有我的其他文件,与此代码subfile.py:

file = open("test.txt", "w") 
file.close() 

我希望我的subfile.py创建自己的文件夹中的test.txt文件,但它在main.py的文件夹中创建它。

所以我的问题是,如何使来自它自己的文件夹中的subfile.py运行,即使它从main.py开始

main.py文件夹:C:/用户/用户/桌面

subfile.py文件夹:C:/用户/用户/桌面/文件夹

+0

什么是产生一个新的过程,而不是导入您的第二PY文件作为一个模块直接调用其功能的目的是什么? –

+1

一般来说,工作目录不会是main.py的目录。无论父进程设置为工作目录,任何正确编写的程序都不应依赖最初的工作目录来查找其任何私有资源,例如查找subfile.py脚本。另外,不要使用'os.popen'。没有理由通过shell运行这个命令。使用'subprocess.Popen'。 – eryksun

+0

@ Code-Apprentice Beceuase在实际的代码中,子文件位于另一个目录中,并暂时删除带有“main.py”的文件夹,并且根据我所知它不能删除它自己。 – Lojas

回答

1

subfile.py,工作目录(os.chdir)改变到包含subfile.py文件目录:

import os 
os.chdir(os.path.dirname(__file__)) 
0

试试这个:

import os 
import inspect 

your_current_folder_path = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()))) 
your_current_file_path = os.path.join(your_current_folder_path, "test.txt") 

print(your_current_folder_path) 
print(your_current_file_path) 


with open(your_current_file_path, "w") as make_file: 
    make_file.write("") 

print("Done.") 

另一种方式:您可以通过os.chdir改变你的工作目录( “your_folder_directory”)功能。

os.chdir(r"C:/users/user/Desktop/folder") 
1

您可以使用子代替已是建于:

subprocess.Popen(sys.executable + ' subfile.py', cwd=os.path.dirname(__file__) + '/folder') 
+0

主脚本可以与任何工作目录一起运行。你绝对必须通过'__file__'获得main.py的路径。另外,如果没有安装py.exe启动程序呢?通过'sys.executable'运行这个更安全。 – eryksun