python - 在运行时关闭文档
问题描述
我正在使用 Python 创建一个脚本来在命令提示符下运行 perforce 命令。其中一个命令打开一个文件。我想写入文件底部,然后保存文件,然后关闭文件。我不知道该文件将被命名为它每次都不同,并且每次运行程序时该命令运行 5 次或更多次。命令是:
os.system('p4 user -f ' + name)
解决方案
听起来您实际上想要做的是修改 Perforce 用户规范。这非常容易。如果你使用 P4Python,你有一个很好的规范对象 API:
https://www.perforce.com/perforce/r14.2/manuals/p4script/python.p4.html#python.p4.save_spectype
并且可以执行以下操作:
user = p4.get_user(name)
# do things
p4.save_user(user)
如果您想在没有 P4Python 的情况下编写脚本,则基本命令行比尝试在编辑器周围编写脚本具有更好的选择。例如:
p4 --field Reviews+=//depot/whatever/... user -o NAME | p4 user -i -f
将添加//depot/whatever/...
到NAME
'sReviews
字段的底部。
或者,如果您不喜欢该--field
选项,您可以自己解析和修改规范:
p4 user -o NAME | **REGEX MAGIC** | p4 user -i -f
如果你真的想编写一个类似命令p4 user
的脚本,而不是使用脚本 API 或方便的-o
/ -i
/ 钩子,以避免让它调用带有临时文件的编辑器(换句话说,如果你是一个正在寻找独特挑战的脚本受虐狂),您最好的选择是覆盖P4EDITOR
并让它指向您编写的脚本。任何指定的可执行文件都P4EDITOR
将使用临时文件名调用;修改后的规范将在P4EDITOR
退出后立即上传(从临时文件)。
推荐阅读
- listview - 如何在 ListView 中获取复选框的坐标
- terraform - Terraform 正在添加/删除相同的资源
- python - 如何在不同长度的列表上使用 map(),用自定义值填充最短的列表
- java - 与 Asynctask 适配的 Listview 不起作用
- c - 在一行中进行多步计算会更好吗?
- r - OpenCPU R Markdown - 读取请求标头和 Cookie
- r - 谁能帮我制作 PCA 3D 箱形图?
- c++ - 在 C++ 中,可以通过从私有实例化类调用方法来覆盖虚拟方法而不重新实现它吗?
- excel - 在 Excel 中对数据块进行排序
- python - 如何将权重作为向量从词典添加到推文?