我正在尝试将名称更改的文件保存到与脚本不同的文件夹中:
save_field( './cycle_1_580-846/txt/"frame_" + str( 580 + j ) + "_to_" + str( 581 + j ) + ".txt"', "Data68_0" + str( 580 + j ) + ".tif", str( 580 + j ) + "_to_" + str( 581 + j ), scale = 1500, width = 0.0025)
现在,为了保存带有循环变量的文件名,我跟着this post。
我天真地认为使用'和'会解决问题,但是,如果我这样做,我会在右文件夹中找到一个文件,但是错误的名称(在这种情况下:“frame_”+ str(580 + j)+“ to ”+ str(581 + j)+“。txt”(我希望:frame_580_to_581.txt)。如果我没有设置路径,我没有问题。
有一种聪明的方法可以解决这个问题吗?
干杯!
编辑 j只是一定范围的文件(在这种情况下,它是从0到270,递增1)
也许这也会有所帮助
def save_field( filename, background, new_file, **kw):
""" Saves quiver plot of the data stored in the file
Parameters
----------
filename : string
the absolute path of the text file
background : string
the absolute path of the background image file
new_file : string
the name and format of the new file (png preferred)
Key arguments : (additional parameters, optional)
*scale*: [None | float]
*width*: [None | float]
"""
a = np.loadtxt(filename)
pl.figure()
bg = mpimg.imread(background)
imgplot = pl.imshow(bg, origin = 'lower', cmap = cmps.gray)
pl.hold(True)
invalid = a[:,3].astype('bool')
valid = ~invalid
pl.quiver(a[invalid,0],a[invalid,1],a[invalid,2],a[invalid,3],color='r',**kw)
pl.quiver(a[valid,0],a[valid,1],a[valid,2],a[valid,3],color='r',**kw)
v = [0, 256, 0, 126]
axis(v)
pl.draw()
pl.savefig(new_file, bbox_inches='tight')
答案 0 :(得分:0)
我不确定你的例子中有什么“j”...但是我会做出一些隐含的假设并从那里向前推进(也就是看起来你正试图建立一个增量)。
尝试以下方法:
save_path = "./cycle_1_580-846/txt/frame_"
save_file = (str(580) + "_to_" + str(581) + ".txt")
save_other_file = ("Data68_0" + str(580) + ".tif")
save_field((save_path + save_file), , save_other_file, (str(580) + "_to_" + str(581)), scale = 1500, width = 0.0025)
我推荐上面的内容 - 有一些封装,对我来说更容易阅读,我甚至会更进一步清理save_field()...但我不是知道它做了什么,我不想承担太多。
您遇到的真正问题,并且您继续使用所拥有的内容,就是您将单引号与双引号错误地混合在一起。
sampleText = 'This is my "double quote" example'
sampleTextAgain = "This is my 'single quote' example"
这两个都有效。
但是,你所拥有的是:
sampleBadText = '"I want to have some stuff added" + 580 + "together"'
单引号包装基本上将ENTIRE行转换为字符串。所以,是的,难怪为什么你的文件被命名为它的方式。您需要在适当的位置使用单引号/双引号终止字符串,然后跳回到python内置/变量名称,然后返回到字符串以便连续strings
+ variables
+ {{1 }}
没有为你完成所有工作,这就是它的样子:
strings
注意我是如何调整单/双引号的,这样“字符串文字”包含在单引号或双引号中,然后我正确终止字符串文字和concat(通过save_field( './cycle_1_580-846/txt/frame_' + str( 580 + j ) + '_to_' + str( 581 + j ) + '.txt', [...]
)变量/整数/附加字符串......
希望这是有道理的,但是你可以花很长时间来清理你所避免的这种混乱。
最终,如果你能看起来像:
+
这更清洁,更具可读性。但是,我再次没有花时间研究save_field的作用以及它接受的save_field(_file_name, _other_file_name, other_arg, scale=1500, width=0.0025)
和args
,所以我不知道kwargs
,_file_name
,而且_other_file_name
甚至是有道理的例子,我只是希望他们这样做!