Невозможно передать расположение ввода и вывода для внешней команды, используя пользовательский интерфейс в Python - PullRequest
0 голосов
/ 25 апреля 2019

Я совершенно новичок в Python.

Я пытаюсь передать местоположение ввода и вывода с помощью пользовательского интерфейса, как показано в этом конкретном обсуждении [1]: Как указать местоположение «ввода» и «вывода» для кода Python с использованием интерфейса пользователя и запустить код из самого интерфейса?

Но здесь я вызываю внешнюю команду и пытаюсь запустить ее из моего кода Python, передавая местоположение ввода и вывода, как в вышеупомянутом случае.

from tkinter import *
from tkinter import filedialog

import numpy as np
import gdal
gdal.UseExceptions()
import os
def your_code(input_file, intermediate_file, output_file):

    cmd = "gpt F:\saikiran\myGraph.xml -Psource=input_file - Ptarget=intermediate_file"
    os.system(cmd)
    ds = gdal.Open(intermediate_file)
    band = ds.GetRasterBand(1)
……………………………………………...
#gen_map_button.place(x=230, y=300)
gen_map_button.pack()

root.mainloop()

Но я столкнулся с этой ошибкой:

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Users\User\Anaconda3\lib\tkinter\__init__.py", line 1705, in __call__
return self.func(*args)
  File "C:\Users\User\GUI-pywt.py", line 145, in gen_map
your_code(input_filename, intermediate_filename, output_filename)
  File "C:\Users\User\GUI-pywt.py", line 15, in your_code
ds = gdal.Open(intermediate_file)
  File "C:\Users\User\Anaconda3\lib\site-packages\osgeo\gdal.py", line 3251, in Open
return _gdal.Open(*args)
RuntimeError: F:/saikiran/ddd: No such file or directory

Какую ошибку я сделал?

1 Ответ

0 голосов
/ 25 апреля 2019

Ваш cmd неверен.

Объединенная строка со значениями

cmd = "gpt F:\saikiran\myGraph.xml -Psource=" + input_file + " - Ptarget=" + intermediate_file 

или использовать форматирование строки

cmd = "gpt F:\saikiran\myGraph.xml -Psource={} - Ptarget={}".format(input_file, intermediate_file) 

С Python 3.6 или 3.7 вы можете использовать f-string

cmd = f"gpt F:\saikiran\myGraph.xml -Psource={input_file} - Ptarget={intermediate_file}" 

Текущий cmd

"gpt F:\saikiran\myGraph.xml -Psource=input_file - Ptarget=intermediate_file"

создаст файл с буквальным именем

 intermediate_file

не

 F:/saikiran/ddd

и это может создать проблему в gdal.Open()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...