Метод запуска P4Python не работает на пустой папке - PullRequest
0 голосов
/ 14 сентября 2018

Я хочу найти в хранилище Perforce файлы. Я делаю это из скрипта Python и использую команду библиотеки p4python:

list = p4.run("files", "//mypath/myfolder/*")

это прекрасно работает, если myfolder содержит некоторые файлы. Я получаю питона list в качестве возвращаемого значения. Но когда в myfolder нет файла, программа останавливается и сообщение об ошибке не отображается. Моя цель - получить пустой питон list, чтобы я мог видеть, что в этой папке нет файлов.

У кого-нибудь есть идеи? Я не смог найти информацию в документации по файлам p4 и в stackoverflow.

Заранее спасибо! Jakob

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

Я собираюсь предположить, что у вас есть обработчик исключений для выполнения этой команды, которая получает исключение и завершается. Я написал очень простой тестовый скрипт и получил это:

C:\Perforce\test>C:\users\samwise\AppData\local\programs\python\Python36-32\python files.py
Traceback (most recent call last):
  File "files.py", line 6, in <module>
    print(p4.run("files", "//depot/no such path/*"))
  File "C:\users\samwise\AppData\local\programs\python\Python36-32\lib\site-packages\P4.py", line 611, in run
    raise e
  File "C:\users\samwise\AppData\local\programs\python\Python36-32\lib\site-packages\P4.py", line 605, in run
    result = P4API.P4Adapter.run(self, *flatArgs)
P4.P4Exception: [P4#run] Errors during command execution( "p4 files //depot/no such path/*" )

        [Error]: "//depot/no such path/* - must refer to client 'Samwise-dvcs-1509687817'."
0 голосов
/ 14 сентября 2018

Попробуйте что-нибудь подобное?

import os

if len(os.listdir('//mypath/myfolder/') ) == 0: # Do not execute p4.run if directory is empty
    list = []
else:    
    list = p4.run("files", "//mypath/myfolder/*")
...