簡體   English   中英

從Python的子目錄導入csv

[英]Importing csv from a subdirectory in Python

我的項目中有一堆csv文件,這些文件可能會或可能不會根據用戶輸入被調用。 我想將這些文件存儲在一個子目錄中,以使我的項目文件夾整潔。 我對如何做到這一點感到非常困惑。 我挖掘的大部分資源都涉及從子目錄而不是基本數據文件導入模塊或包。

當前導入csv的代碼行如下所示:

target_doc = csv.reader(open('sample.csv', 'rU'), delimiter=",", quotechar='|')

我假設一個解決方案將涉及設置路徑變量,使用import os和import sys,以及可能將此行拆分成多個部分?

您可以按文件路徑打開文件。 只需使用open('/path/to/file')

導入僅對於模塊和軟件包是必需的-Python源代碼。

這里唯一真正的注釋是使用os.path.join() ,其中的連接路徑可在不同的操作系統和文件系統之間實現良好的兼容性。 os.path模塊的其余部分在任何涉及文件的地方也都值得一看。 Windows路徑的另一個常見陷阱是使用反斜杠轉義字符,因此必須轉義反斜杠( "some\\\\file" )-一個丑陋的選項,使用原始字符串( r"some\\file" ),使用正斜杠(Python將實際上會自動處理此問題),或者-最佳選擇,將您的路徑作為參數傳遞給上述os.path.join()

還可能值得注意的是,使用with語句將改善您的代碼。

例如:

with open(os.path.join("path", "to", "file.csv"), 'rU') as file:
    target_doc = csv.reader(file, delimiter=",", quotechar='|')
    ...

使用with可確保關閉文件-即使發生異常。

您走錯了路。 Python路徑和導入僅用於“鏈接”其他python代碼到您的系統中。 通過指定文件的完整路徑,可以訪問系統用作資源的其他文件:

 target_doc = csv.reader(open('/resources/csv_files/sample.csv', 'rU'), delimiter=",", quotechar='|')

或運行python文件的相對路徑:

 target_doc = csv.reader(open('csv_files/sample.csv', 'rU'), delimiter=",", quotechar='|')

您可以使用

import os
cwd = os.path.dirname(__file__) # get current location of script

然后使用os.path.join(cwd,'some /../ path')構造指向您喜歡的任何位置的絕對路徑; 因此,無論python解釋器的當前工作目錄如何,您的路徑都僅相對於腳本位置。 如果您不想依賴Unix的'/'約定,Mai也使用os.sep。

為什么不簡單地使用:

path_in ='/directory_whatever_it_is/sample_data.csv'

sample_data = pd.read_csv(path_in)

暫無
暫無

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

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