2017-10-28 75 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

相關問題