Как запустить программу, установленную с playonlinux, из командной строки linux

Должен сказать, что ваш код заставил меня немного почесать затылок.

Вот как я бы это сделал:

#!/usr/bin/env python3
import sys

def myOpen(aList):
    fileName = "myFile"

    if len(aList) > 1:
        fileName = aList[1]

    try:
        with open(fileName) as f:
            for line in f:
                print(line, end="")
    except IOError:
        print("Can't open file " + fileName + ".")

myOpen(sys.argv)

Теперь, если я выполняю этот сценарий, я получаю такой результат, когда НЕ передаю аргумент, используя имя_файла ( myFile ), который находится в функции:

./args.py
foo
bar
baz

Давайте дважды проверим файл myFile .

cat myFile 
foo
bar
baz

Вот что происходит, когда я указываю поддельный файл:

./args.py foo
Can't open file foo.

И, наконец, когда я указываю правильный файл в качестве аргумента:

./args.py vmstat.txt 
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 2419392  76200 642712    0    0    25    10   20   62  0  0 99  1  0

Основная проблема с вашим кодом заключается в следующем:

FILENAME = first

first содержит весь список, то есть sys.argv , вы не можете открыть файл с элементом списка в качестве аргумента для (open) . Проверьте это:

#!/usr/bin/env python3

import sys

first = sys.argv
FILENAME = first

with open(FILENAME) as f:
    for line in f:
        print(f)

Теперь, когда я выполняю, я получаю следующее:

./faultyArgs.py myFile
Traceback (most recent call last):
  File "./faultyArgs.py", line 8, in <module>
    with open(FILENAME) as f:
TypeError: invalid file: ['./faultyArgs.py', 'myFile']

Кроме того, кажется, что вы никогда не устанавливали переменную filename .

9
19.05.2016, 13:48
1 ответ

Вот как я это сделал:

Найдите имя ярлыка программы, которую вы хотите запустить, введя

$ ls ~/.PlayOnLinux/shortcuts

Затем просто

$ playonlinux --run "Name of the Program"
14
27.01.2020, 20:06

Теги

Похожие вопросы