python - `open` 函数不会在提到的路径创建文件
问题描述
我得到了这个代码:
data = os.path.join(os.getenv("APPDATA"), "acctoolspremiumaccess.txt")
open(f"{data}", 'w').close()
它应该在文件appdata
夹中创建文件,但它在与文件文件夹相同的文件夹中创建py
它
(对不起,如果我的英语不好,那不是我的主要语言 (:)
解决方案
可能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
我认为您可以根据我的回答调试您的代码。
推荐阅读
- dart - 在dartlang中,dill和内核快照有什么区别?
- android - Android仅获得再次使用listerner时产生错误的原始线程
- javascript - 我们如何在不修改场景树结构或几何形状的情况下更改 Three.js 对象的旋转原点(枢轴点)?
- python - JSONDecodeError:从 Python 开始的未终止字符串,即使我尝试使用 strict = False 来忽略 /n 之类的字符
- java - 绘画属性在画布上不起作用
- angular - share() 在 Angular HTTP 调用中不起作用
- javascript - 从另一个组件打开纸质对话框
- html - 如何在不裁剪的情况下将完整图像的高度调整为适合 chrome/任何浏览器的背景?
- sql - Oracle 将 CLOB 中的字符串替换为 sql 作为值
- sql - SQL中的多列到不同的行