Не могу печатать с помощью p4python

Я не уверен, является ли это ошибкой с P4API или проблемой с моим использованием p4python.

p4.run_print("-q", "-o " + targetPath, depotFile + "#" + rev)

... дает исключение.

Traceback (most recent call last):
  File "C:\pyTools\p4test.py", line 218, in <module>
    main()
  File "C:\pyTools\p4test.py", line 70, in main
    copy_changes(p4, args.copy[0], args.copy[1], clientStream, targetRoot)
  File "C:\pyTools\p4test.py", line 204, in copy_changes
    p4_print_to_path(p4, change['depotFile'][i], change['rev'][i], targetPath) # Get the file@rev at the target path
  File "C:\pyTools\p4test.py", line 215, in p4_print_to_path
    p4.run_print("-q", "-o " + targetPath, depotFile + "#" + rev)
  File "C:\Python33\lib\site-packages\P4.py", line 610, in run_print
    raw = self.run('print', args, **kargs)
  File "C:\Python33\lib\site-packages\P4.py", line 533, in run
    result = P4API.P4Adapter.run(self, *self.__flatten(args))
P4.P4Exception: [P4#run] Errors during command execution( "p4 print -q -o C:/_code/target\PurleyPkg\Tool\GenBiosId\BiosIdD.env //CP_Server_BIOS/Skylake_Trunk/PurleyPkg/Tool/GenBiosId/BiosIdD.env#35" )

        [Error]: "can't create directory for  C:/_code/target\\PurleyPkg\\Tool\\GenBiosId\\BiosIdD.env\nmkdir:  C:: The filename, directory name, or volume label syntax is incorrect. "

Если я скопирую строку и использую ее в командной строке, все работает нормально.

p4 print -q -o C:/_code/target\PurleyPkg\Tool\GenBiosId\BiosIdD.env //CP_Server_BIOS/Skylake_Trunk/PurleyPkg/Tool/GenBiosId/BiosIdD.env#35

... это создало путь к файлу и правильно скопировало файл. Итак, похоже, я правильно сформировал вызов API. Я делаю что-то не так здесь? Это связано с Python 3.x и Python 2.x? Я не пробовал с 2.x. Кто-нибудь смог использовать команду печати через модуль p4python?

Я не смог найти исходный код P4API (не уверен, что эта часть общедоступна). У меня есть исходный код p4python, но путь отладки заканчивается на строке 533 вызовом P4API, который у меня есть только в виде двоичного файла.

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


person ChipJust    schedule 31.12.2013    source источник


Ответы (1)


синтаксис этой команды вводит в заблуждение:

p4 [g-opts] print [ -a -A -o outfile ] [ -q ] file[revRange] ...

Между -o и началом выходного файла нет пробела. Моя проблема в этом вопросе заключалась в том, что я добавил пробел после "-o"

"-o " + targetPath

Удаление пробела решило эту проблему.

person ChipJust    schedule 31.12.2013
comment
Хм, я собирался предложить попробовать p4.run_print("-q", "-o", targetPath, depotFile + "#" + rev). Если у вас будет возможность, можете ли вы попробовать и это? Я предполагаю, что удаление пробела просто сработало из-за того, как P4 анализирует аргументы. - person Mike O'Connor; 01.01.2014
comment
Да, p4.run_print(-q, -o, targetPath, depotFile + # + rev) тоже работает. p4.run_print(-q, -o , targetPath, depotFile + # + rev) не работает (возможно, это ожидаемо). - person ChipJust; 03.01.2014