Python3无法仅通过文件名打开文件、需使用完整路径的问题咨询
问题原因
Python的open()函数传入相对路径时,会默认从脚本运行时的当前工作目录下查找目标文件,而非从脚本文件本身的存放目录查找。你遇到报错的核心原因就是:你运行脚本时的工作目录,和test.txt文件的存放目录不一致。
比如从报错日志可以看到你的脚本存放在/home/kernel/Documents/python/路径下,如果你是在/home/kernel/目录下执行python Documents/python/file upper.py命令运行脚本,那么Python的当前工作目录就是/home/kernel/,只会在这个路径下找test.txt,自然会报找不到文件的错误。
另外注意你贴的示例代码和实际运行代码有变量名不一致的问题:你示例代码里把输入的文件名赋值给了file变量,但报错日志里调用open()时传入的是fname变量,这也可能是报错的诱因之一,请先确认实际运行的代码里变量名统一。
解决方法
- 方案1:将目标文件放到脚本运行的工作目录下
你可以在脚本开头加两行代码打印当前工作目录,确认后把test.txt放到对应路径即可:import os print(os.getcwd()) - 方案2:自动拼接脚本所在目录的绝对路径
如果希望不管在哪个目录下运行脚本,都能正常读取和脚本同目录下的文件,可以手动拼接文件的绝对路径:import os # 获取当前脚本所在目录的绝对路径 script_path = os.path.dirname(os.path.abspath(__file__)) file_name = input("enter your file name: ") # 拼接得到目标文件的完整路径 full_path = os.path.join(script_path, file_name) fhand = open(full_path) - 方案3:直接输入文件的完整绝对路径,不受工作目录限制。
内容的提问来源于stack exchange,提问作者meysam chaghamirza
相关产品推荐
相关产品推荐

