首页 > 解决方案 > `open` 函数不会在提到的路径创建文件

问题描述

我得到了这个代码:

data = os.path.join(os.getenv("APPDATA"), "acctoolspremiumaccess.txt")

open(f"{data}", 'w').close()

它应该在文件appdata夹中创建文件,但它在与文件文件夹相同的文件夹中创建py

(对不起,如果我的英语不好,那不是我的主要语言 (:)

标签: python

解决方案


可能APPDATA环境变量不包含完整路径或为空。如果路径不是完整路径或为空,则路径将从您调用脚本的位置开始。

测试代码:

import os

full_path = "/home/user"  # Full path -> /home/user/<your_file>
not_full_path = "admin"  # NOT full path -> <your_current_location>/admin/<your_file>
empty_path = ""  # Empty path -> <your_current_location>/<your_file>

print(f"I am here: {os.getcwd()}")  # It returns your current location

data_full_path = os.path.join(full_path, "acctoolspremiumaccess.txt")
data_not_full_path = os.path.join(not_full_path, "acctoolspremiumaccess.txt")
data_empty_path = os.path.join(empty_path, "acctoolspremiumaccess.txt")

print(data_full_path)
print(data_not_full_path)
print(data_empty_path)

open(f"{data_full_path}", 'w').close()
open(f"{data_not_full_path}", 'w').close()
open(f"{data_empty_path}", 'w').close()

输出:

>>> python3 test.py 
I am here: /home/user/working_dir/tools
/home/user/acctoolspremiumaccess.txt
admin/acctoolspremiumaccess.txt
acctoolspremiumaccess.txt

生成的文件检查:

>>> ll /home/user/acctoolspremiumaccess.txt 
-rw-rw-r-- 1 user user 0 Sep 22 19:24 /home/user/acctoolspremiumaccess.txt

>>> ll /home/user/working_dir/tools/admin/acctoolspremiumaccess.txt 
-rw-rw-r-- 1 user user 0 Sep 22 19:24 /home/user/working_dir/tools/admin/acctoolspremiumaccess.txt

>>> ll /home/user/working_dir/tools/acctoolspremiumaccess.txt 
-rw-rw-r-- 1 user user 0 Sep 22 19:24 /home/user/working_dir/tools/acctoolspremiumaccess.txt

或者,您可以使用os.path.abspath().

在我的例子中:

print(os.path.abspath(data_full_path))
print(os.path.abspath(data_not_full_path))
print(os.path.abspath(data_empty_path))

输出:

/home/user/acctoolspremiumaccess.txt
/home/user/working_dir/tools/admin/acctoolspremiumaccess.txt
/home/user/working_dir/tools/acctoolspremiumaccess.txt

我认为您可以根据我的回答调试您的代码。


推荐阅读