У меня есть программа на Python, которую я портирую на Mac. Мне нужно загрузить сохраненный файл изображения в буфер обмена, чтобы его можно было вставить в документ, используя cmd + v.
Это был ближайший поток к тому, что мне нужно , но решения нене работает, потому что мой путь к файлу osascript неизвестен. Это переменная, определенная в Python пользователем, и я борюсь с синтаксисом, необходимым для передачи переменной из Python в osascript.
Это не работает:
import subprocess
def imagepath():
f=open('config.txt')
line=f.readlines()
inpath = (line[2])
print(inpath)
return(inpath)
imagepath()
subprocess.run(["osascript", "-e", 'set the clipboard to (read (POSIX file "+ str(inpath) + /tc.jpg") as JPEG picture)'])
печатает inpath как: / Users / admin / Desktop / PROGRAMMING, который является правильным путем, но это приводит к "ошибке выполнения: невозможно выполнитьфайл ": + str (inpath) +: tc.jpg" в файл типа. (-1700) "
Также не это:
import subprocess
def imagepath():
f=open('config.txt')
line=f.readlines()
inpath = (line[2])
print(inpath)
return(inpath)
imagepath()
subprocess.run(["osascript", "-e", 'set the clipboard to (read (POSIX file """+ str(inpath) + /tc.jpg""") as JPEG picture)'])
В результате:" синтаксическая ошибка:Ожидаемый «,», но найденный «» ». (-2741) "
Следующее:
import subprocess
def imagepath(): # check line 1 of config file (screencap name)
f=open('config.txt')
line=f.readlines()
inpath = (line[2]) # note: confusing. 0=line 1, 1=line2 etc.
print(inpath)
return(inpath)
imagepath()
subprocess.run(["osascript", "-e", 'set the clipboard to (read (POSIX file ''' + str(inpath) + '''/tc.jpg") as JPEG picture)'])
Результат:" SyntaxError: EOF при сканировании строкового литерала в тройных кавычках "
Любая помощь будет принята с благодарностью!
РЕДАКТИРОВАТЬ: обновленный код ниже:
def imagepath(): # check line 1 of config file (screencap name)
f=open('config.txt')
line=f.readlines()
inpath = line[2].strip('\n')
print(inpath)
return(inpath)
imagepath()
subprocess.run(["osascript", "-e", "set the clipboard to (read (POSIX file \"" + inpath + "/tc.jpg\") as JPEG picture)" ])
Теперь возвращает: "NameError: имя 'inpath' не определено"
РЕДАКТИРОВАТЬ 2: Завершается без ошибок, но не удаетсязагрузить в буфер обмена.
import subprocess
def imagepath(): # check line 1 of config file (screencap name)
f=open('config.txt')
line=f.readlines()
inpath = (line[2]).strip('\n')
print(inpath)
return(inpath)
subprocess.run(
["osascript", "-e", "set the clipboard to (read (POSIX file \"" + inpath + "/tc.jpg\") as JPEG picture)"])
imagepath()
Это не возвращает ошибок и печатает правильный путь, но не добавляет файл в буфер обмена.