为了账号安全,请及时绑定邮箱和手机立即绑定

将创建的文件保存到循环中的新目录中

将创建的文件保存到循环中的新目录中

aluckdog 2022-09-27 09:56:05
我目前正在使用循环更新目录中的一些文件,我想将这些文件保存在其他目录中。这是我所拥有的:from astropy.io import fitsfrom mpdaf.obj import Spectrum, WaveCoordimport os, globROOT_DIR=input("Enter root directory : ")os.chdir(ROOT_DIR)destination=input("Enter destination directory : ")fits_files = glob.glob("*.fits")for spect in fits_files:    spe = Spectrum(filename= spect, ext=[0,1])    (spect_name, ext) = os.path.splitext(spect)    sperebin = spe.rebin(57)    sperebin.write(spect_name + "-" + "rebin" + ".fits")使用最后一行,它当前正在我所在的目录中写入文件,我希望它直接写入目标目录,任何想法如何继续?sperebin.write(spect_name + "-" + "rebin" + ".fits")
查看完整描述

2 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

使用 os.path.join,您可以将目录与文件名组合在一起以获取文件路径。

sperebin.write(os.path.join(destination, pect_name + "-" + "rebin" + ".fits"))

此外,使用os,您可以检查目录是否存在,并根据需要创建它。

if not os.path.exists(destination):
    os.makedirs(destination)


查看完整回答
反对 回复 2022-09-27
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

您不需要或不想更改脚本中的目录。相反,请使用路径库来简化新文件名的创建。


from pathlib import Path


root_dir = Path(input("Enter root directory : "))

destination_dir = Path(input("Enter destination directory : "))


# Spectrum wants a string for the filename argument

# so you need to call str on the Path object

for pth in root_dir.glob("*.fits"):

    spe = Spectrum(filename=str(pth), ext=[0,1])

    sperebin = spe.rebin(57)

    dest_pth = destination_dir / pth.stem / "-rebin" / pth.suffix

    sperebin.write(str(dest_pth))


查看完整回答
反对 回复 2022-09-27
  • 2 回答
  • 0 关注
  • 76 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信