我希望从主python文件运行的文件从它们自己的目录运行

我希望从主python文件运行的文件从它们自己的目录运行,python,windows,python-3.x,operating-system,Python,Windows,Python 3.x,Operating System,例如: 我的主文件main.py包含以下代码: import os os.popen("start folder/subfile.py") file = open("test.txt", "w") file.close() 然后我还有另一个文件subfile.py,其中包含以下代码: import os os.popen("start folder/subfile.py") file = open("test.txt", "w") file.close() 我希望我的subfile.py

例如:

我的主文件main.py包含以下代码:

import os
os.popen("start folder/subfile.py")
file = open("test.txt", "w")
file.close()
然后我还有另一个文件subfile.py,其中包含以下代码:

import os
os.popen("start folder/subfile.py")
file = open("test.txt", "w")
file.close()
我希望我的subfile.py在它自己的文件夹中创建test.txt文件,但它在main.py的文件夹中创建它

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

main.py文件夹:C:/users/user/Desktop


subfile.py文件夹:C:/users/user/Desktop/folder

subfile.py
中,将工作目录()更改为包含
subfile.py
文件的目录:

import os
os.chdir(os.path.dirname(__file__))
试试这个:

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\u folder\u directory”)函数更改您的工作目录

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

您可以使用具有内置功能的子流程:

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

生成新进程的目的是什么,而不是将第二个py文件作为模块导入并直接调用其函数?通常,工作目录不是main.py的目录。无论父进程设置为工作目录是什么,正确编写的程序都不应该依赖初始工作目录来查找其任何私有资源,例如查找subfile.py脚本。另外,不要使用
os.popen
。没有理由通过shell运行此命令。使用
subprocess.Popen
@code peedient因为在真实的代码中,子文件位于另一个目录中,并临时删除带有“main.py”的文件夹,据我所知,它无法删除自身。@Lojas为什么要删除带有main.py的文件夹?@code peedient因为在我的真实情况下,main.py在文件夹中,而subfile.py在文件夹之外,这样解释比较容易。主脚本可以在任何工作目录下运行。您必须通过
\uuuu文件\uuuuu
获取main.py的路径。另外,如果没有安装py.exe启动器怎么办?通过
sys.executable
运行此操作更安全。