0

我正在尝试将更改名称的文件保存到与脚本不同的文件夹中:

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)

现在为了保存带有循环变量的文件名,我关注了这篇文章

我天真地认为使用 ' 和 " 可以解决问题,但是,如果我这样做,我会在正确的文件夹中得到一个文件但名称错误(在这种情况下:"frame_" + str( 580 + j ) + "" + str( 581 + j ) + ".txt) (我想要:frame_580_to_581.txt)。如果我不设置路径,我没有问题。

有没有聪明的方法来克服这个?

干杯!

EDIT 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')
4

1 回答 1

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"'

单引号换行基本上将整行转换为字符串。所以,是的,难怪你的文件是这样命名的。您需要在适当的位置用单引号/双引号终止您的字符串,然后跳回 python 内置/变量名称,然后返回字符串以连接strings++ 。variablesstrings

没有为你做所有的工作,这就是它开始的样子:

save_field( './cycle_1_580-846/txt/frame_' + str( 580 + j ) + '_to_' + str( 581 + j ) + '.txt', [...]

请注意我是如何调整单引号/双引号的,以便将“字符串文字”包裹在单引号(或双引号)中,然后我正确地终止字符串文字并连接(通过+)变量/整数/附加字符串。 ..

希望这是有道理的,但你可以走很长的路来清理你所拥有的东西以避免这种类型的混乱。

最终,如果你能让它看起来像:

save_field(_file_name, _other_file_name, other_arg, scale=1500, width=0.0025)

这更干净,更具可读性。但是,再一次,我没有花时间研究 save_field 做什么args以及kwargs它接受什么,所以我不知道_file_name, _other_file_nameother_arg甚至作为例子有意义,我只是希望他们这样做!

于 2013-06-18T15:22:19.873 回答