摘录自位于 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:[错误2]文件b'history \ filename'不存在:b'history \ filename'
这里到底出了什么问题? 当文件名位于子文件夹中时,如何将其传递给my_func?
预先感谢
答案 0 :(得分:1)
首先,要独立于平台,应使用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))
如果历史记录子文件夹是脚本目录的固定子文件夹,则您甚至应考虑将目标文件名确定为这样的绝对路径(另请参见this带有注释的答案):
base_dir = os.path.dirname(os.path.abspath(__file__))
my_func(os.path.join(base_dir, 'history', filename))
答案 1 :(得分:1)
您的问题的答案出了什么问题:
Python尝试在名为thread::spawn
的子目录中打开名为"filename"
的文件,该文件不存在。您应该改为传递"history"
变量的值,如下所示:
您应该使用os.path.join()。
filename
或者如果文件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))
使用Python的format()的另一种方法:
import os
some_number = 3452342
filename = str(some_number) + '.csv'
my_func("history/" + filename)
答案 2 :(得分:1)
首先尝试获取当前路径,然后将获得的路径与文件名连接起来。
import os
some_number = 3452342
filename = str(some_number) + '.csv'
path_file = os.path.join(os.getcwd(), filename)
my_func(path_file)
有关如何使用python处理路径的更多信息,请查看此内容。 Common pathname manipulations