如何打开签出的文件 P4 Python
How to open a checked out file P4 Python
我目前正在 Python 中使用 P4Python API 编写一个脚本,它会自动执行在 Perforce 中签出文件并对其进行一些更改的过程。我目前正在尝试弄清楚如何打开已签出的文件,以便我可以对其进行更改,但我无法使用“//depot”文件路径打开它。我假设我需要使用系统文件路径 (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
函数操作的是本地文件,没有depot路径的概念,所以如你所说,需要使用workspace路径。方便的是,这作为 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("//depot/filename") 将提供所有必要的信息,附加的 "[0]['clientFile']" 用于提取本地文件路径。
我目前正在 Python 中使用 P4Python API 编写一个脚本,它会自动执行在 Perforce 中签出文件并对其进行一些更改的过程。我目前正在尝试弄清楚如何打开已签出的文件,以便我可以对其进行更改,但我无法使用“//depot”文件路径打开它。我假设我需要使用系统文件路径 (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
函数操作的是本地文件,没有depot路径的概念,所以如你所说,需要使用workspace路径。方便的是,这作为 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("//depot/filename") 将提供所有必要的信息,附加的 "[0]['clientFile']" 用于提取本地文件路径。