python - Python:打开函数无法打开带有附加的新文件
问题描述
我正在编写一个自定义ansible
模块。
以下是它的调用方式:
- name: mymodule.yml -> Run mymodule
mymodule:
test_file: "{{ item }}"
env_file: "{{ environment_file.stdout }}"
out_dir: "{{ nginx_folder }}/{{ rv_dir_name.stdout }}"
base_url: "{{ results_base_url }}"
become: yes
在某个时间点,在模块内,会调用以下 python 命令:
# use file for the stderr descriptor of the subprocess.call
try:
# os.mkdir(_out_dir, 0755 )
ferr = open('std_err.log', 'w')
# fout = open('std_out.log', 'w')
fout = open(_out_dir + "/" + 'std_out.log', 'a')
except Exception as exc:
module.fail_json(msg="Hello: " + str(exc))
# fout = open('std_out.log', 'a')
当我执行模块时,以下行给出了这个错误:
"msg": [Errno 2] 没有这样的文件或目录:'/var/www/html/newman-tests/2019-03-25_09:34:04/std_out.log'",
为什么它无法创建/打开文件,尽管事实是:
a)该模块被调用become: yes
b)open
调用a
它应该创建文件,如果它不存在?
编辑:该文件夹确实存在,因为提前调用它
os.mkdir(_out_dir, 0755 )
失败directory exists
更重要的是,在我的模块下面的几行我称之为:
rc = call(["newman", "run", _test_file, "-k", "-e", _env_file, "-r", "htmlextra,cli", "--reporter-html-report", "--reporter-htmlextra-export", _output], stderr=ferr)
在哪里
_output = _out_dir + "/" + _report_fname
即_out_dir
是上述open
失败的相同目录
(这工作正常)
解决方案
a+
如果文件不存在,则创建该文件。读取的初始文件位置在文件的开头,但输出附加到文件的末尾。
推荐阅读
- python - 如何通过 plt.arrow 绘制两侧分开的箭头?
- java - 安装JDK后,无法运行.jar
- azure - 如何在 Azure DevOps 中导入任务组
- android - ConstraintLayout 中的 RecyclerView。仅在屏幕上显示完整的可见项目
- sql - SQL 从表中选择 resultOfSelect
- xamarin - Xamarin MediaPlugin MediaFile null 但图像已写入路径
- sharepoint - 将文档粘贴到同步的共享点文件夹中时如何触发流程?
- django - 如何从查询集中批量复制和更改许多模型的属性?
- c# - 在 WCF 中使用 REST GET 作为第二个端点
- c++ - add_lvalue_reference/add_rvalue_reference 和 cv 限定类型