无法在python中使用User-Interface将输入和输出的位置传递给外部命令

时间:2019-04-25 08:50:50

标签: python user-interface tkinter

我对python完全陌生。

我正在尝试使用用户界面传递“输入和输出”的位置,如本特定讨论[1]:How to give the location of "Input" and "Output" for a python code using User Interface and run the code from UI itself?

所示。

但是在这里,我正在调用一个外部命令,并试图像上面提到的那样通过传递输入和输出的位置来从我的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 :(得分:0)

您的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()

中造成问题