如何打开已签出的文件P4 Python



我目前正在用P4Python API用Python编写一个脚本,它自动化了在Perforce中签出文件并对其进行一些更改的过程//仓库";文件路径。我认为我需要使用系统文件路径(C:/…(,但我不确定如何继续。

## Connect to P4 server
p4.connect()
## Checkout file to default changelist
p4.run_edit("//depot/file/tree/fileToEdit.txt")
f1 = "//depot/file/tree/fileToEdit.txt" ## This file path does not work
with open(f1, 'w') as file1:
file1.write("THIS IS A TEST")
## Disconnect from P4 server
p4.disconnect()

Python的open函数对本地文件进行操作,并且没有仓库路径的概念,因此,正如您所说,您需要使用工作区路径。方便的是,这是作为p4 edit输出的一部分返回的,因此您可以从那里获取它:

from P4 import P4
p4 = P4()
## Connect to P4 server
p4.connect()
## Checkout file to default changelist
local_paths = [
result['clientFile'] 
for result in p4.run_edit("//depot/file/tree/fileToEdit.txt")
]
for path in local_paths:
with open(path, 'w') as f:
f.write("THIS IS A TEST")
## Disconnect from P4 server
p4.disconnect()

请注意,在p4 edit命令没有打开文件的情况下,这个简单的脚本将不起作用,例如,如果文件没有同步(在这种情况下,您的脚本可能希望p4 sync它(,或者如果文件已经打开(在这种情况下,您可能只想从p4 opened获取本地路径并对其进行修改——或者您可能希望首先恢复现有的更改,或者什么都不做(,或者如果文件不存在(在这种情况下,您可能希望p4 add(。

以下代码为我提供了本地文件路径:

result = p4.run_fstat("//depot/file/tree/fileToEdit.txt")[0]['clientFile']
print(result)

使用p4.run_fstat("//depart/filename"(将提供所有必要的信息;[0]['客户端文件']";是提取本地文件路径。

最新更新