簡體   English   中英

如何將子文件夾中的文件作為參數傳遞給python中的函數

[英]How to pass a file in sub-folder as parameter to a function in python

摘自位於C:\\Users\\my_name\\documents\\python_projects\\randomness\\random.py 的我的 python 腳本:

some_number = 3452342
filename = str(some_number) + '.csv'

# file 3452342.csv is stored in C:\Users\my_name\documents\python_projects\randomness\history
# call a function that takes the filename as the parameter

my_func(r'history\filename')

它觸發以下錯誤:

FileNotFoundError: [Errno 2] 文件 b'history\\filename' 不存在:b'history\\filename'

這里到底出了什么問題? 當它位於子文件夾中時,如何將文件名傳遞給 my_func?

提前致謝

首先,要獨立於平台,您應該使用os.path.join來連接目錄。

其次,就像@k88 指出的那樣,您需要將變量filename傳遞到您的路徑中,而不是字符串'filename'

干凈的方法是:

import os

some_number = 3452342
filename = str(some_number) + '.csv'

# file 3452342.csv is stored in C:\Users\my_name\documents\python_projects\randomness\history
# call a function that takes the filename as the parameter

my_func(os.path.join('history', filename))

相對路徑還是絕對路徑?

如果你的歷史子文件夾是腳本的目錄的子文件夾固定,你應該甚至考慮,以確定你的目標文件名作為像這樣的絕對路徑(見這個答案與評論):

base_dir = os.path.dirname(os.path.abspath(__file__))
my_func(os.path.join(base_dir, 'history', filename))

您的問題的答案出了什么問題:Python 嘗試在名為"history"的子目錄中打開名稱為"filename"的文件,該"filename"不存在。 您應該按如下方式傳遞filename變量的值:

您應該使用os.path.join()

import os

some_number = 3452342
filename = str(some_number) + '.csv'
workdir = "C:\Users\my_name\documents\python_projects\randomness\history"

my_func(os.path.join(workdir, filename))

或者,如果文件3452342.csv放置在主腳本目錄的子文件夾(稱為history )中,則可以使用:

import os

some_number = 3452342
filename = str(some_number) + '.csv'

my_func(os.path.join("history", filename))

或者,您可以簡單地使用字符串連接:

import os

some_number = 3452342
filename = str(some_number) + '.csv'

my_func("history/" + filename)

另一種使用 Python 的format() 的方法

import os

some_number = 3452342
filename = str(some_number) + '.csv'

my_func("history/{}".format(filename))

首先嘗試獲取當前路徑,然后將獲得的路徑與文件名連接起來。

import os

some_number = 3452342
filename = str(some_number) + '.csv'

path_file = os.path.join(os.getcwd(), filename)

my_func(path_file)

有關如何使用 python 處理路徑的更多信息,請查看這個。 常見的路徑名操作

暫無
暫無

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

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