所以我在python中遇到了一个问题:我试图创建一个字符串,我可以使用操作系统关于python。我的目标是对数量可变的输入文件使用此操作:
os.system('gdal_calc.py -A {0} -B {1} -C {2} --outfile={4} --calc="(1-A)(1-B)(1-C)" '.format(File1, File2, File3, outputfile))
我的函数是这样的:
def Mergefilesforoperation(Inputfiles= None):
ABC = ["A","B","C","D","E","F","G","H","I","J","K",
"L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"]
partstring = []
for i in range(len(Inputfiles)-1):
partstring.append(" -" + ABC[i] + " '" + Inputfiles[i] + "'")
wholestring = "".join(partstring)
outputfile = 'outputfile.tif'
operationstring = "gdal_calc.py" + wholestring + " --outfile= {0}".format(outputfile) + ' --calc="(1-A)*(1-B)*(1-C)*(1-D)"'
return wholestring, operationstring
但当我把它还给你的时候:
File1 = '/home/File1.tif' File2 = '/home/File2.tif' File3 = '/home/File3.tif'
Mergefilesforoperation(Inputfiles=[File1, File2, File3])
它提供以下输出:
Wholestring = " -A '/home/File1.tif' -B '/home/File2.tif' -C '/home/File3.tif'"
operationstring = 'gdal_calc.py -A \'/home/File1.tif\' -B \'/home/File2.tif\' -C \'/home/File3.tif\' --outfile= outputfile.tif --calc="(1-A)(1-B)(1-C)"')
如何去掉“operationstring”中字母表后面的\符号?你知道吗
动手吧:
而不是:
和支付与报价attention,我们可以混合报价,但它是如此清楚地遵循一种方法。你知道吗
操作字符串=“gdal_计算py“+批发字符串+”outfile={0}“。格式(outputfile)+'计算=“(1-A)(1-B)(1-C)*(1-D)”'
操作字符串=“gdal_计算py“+批发字符串+”outfile={0}“。格式(outputfile)+“计算='(1-A)(1-B)(1-C)*(1-D)'”
有了这些变化,它可能会起作用。我试过了。你知道吗
要做到这一点,你必须将双引号括在单引号内,而不是以其他方式。你知道吗
尽管在大多数场景中,这两种方法的影响应该是相同的,但这是一个关键场景,因为在Python中字符串的内部表示方式很重要。你知道吗
还要注意字符串内部表示方式的不同
相关问题 更多 >
编程相关推荐