簡體   English   中英

如何使用sys.path.append在python中導入文件?

[英]How to import files in python using sys.path.append?

我的桌面上有兩個目錄, DIR1DIR2 ,它們包含以下文件:

DIR1:
file1.py

DIR2:
file2.py  myfile.txt

這些文件包含以下內容:

file1.py

import sys

sys.path.append('.')
sys.path.append('../DIR2')

import file2

file2.py

import sys

sys.path.append( '.' )
sys.path.append( '../DIR2' )

MY_FILE = "myfile.txt"

myfile = open(MY_FILE) 

myfile.txt文件

some text

現在,有兩種情況。 第一個工作,第二個給出錯誤。

場景1

cdDIR2和運行file2.py它運行沒有問題。

情景2

cdDIR1和運行file1.py ,它拋出一個錯誤:

Traceback (most recent call last):
  File "<absolute-path>/DIR1/file1.py", line 6, in <module>
    import file2
  File "../DIR2/file2.py", line 9, in <module>
    myfile = open(MY_FILE)
IOError: [Errno 2] No such file or directory: 'myfile.txt'

但是,這對我來說沒有任何意義,因為我使用命令sys.path.append('../DIR2')將路徑附加到file1.py

為什么在file1.py時會發生這種情況,當file2.pymyfile.txt在同一目錄中file2.py會拋出錯誤? 謝謝。

您可以使用模塊的__file__屬性創建相對於模塊的路徑。 例如:

myfile = open(os.path.join(
    os.path.dirname(__file__),
    MY_FILE))

無論您在何處啟動腳本,都應該按照自己的意願行事。

更換

MY_FILE = "myfile.txt"
myfile = open(MY_FILE) 

MY_FILE = os.path.join("DIR2", "myfile.txt")
myfile = open(MY_FILE) 

這就是你的問題所指的評論所指的相對路徑解決方案。 這假設您從myfile.txt中的目錄運行它...所以不太理想。

如果你知道my_file.txt總是和file2.py在同一個目錄中那么你可以在file2中嘗試這樣的東西。

from os import path

fname =  path.abspath(path.join(path.dirname(__file__), "my_file.txt"))
myfile = open(fname)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM