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

如何使用 python 从文本文件中复制特定字符串?

如何使用 python 从文本文件中复制特定字符串?

陪伴而非守候 2022-03-09 21:06:55
我在天文学领域工作,我用来解压缩从望远镜获得的图像的过程可能非常乏味。图像的格式是“fits.fz”,代表fits.fits-zipped。我想将这些解压缩为“.fits”。我已经在开发一个程序来简化这个解压缩过程。我通过 Python 和 Tkinter 创建了一个带有两个按钮的图形界面。第一个按钮创建一个名为“list.txt”的文本文件,然后执行一个预先存在的 .bat 文件,该文件将特定目录中以“fits.fz”结尾的每个文件的名称转储到“list.txt”中。第一个按钮还应该将文件的特定名称复制到另一个 bat 文件中非常特定的位置。另一个 .bat 文件称为“Decompress.bat” C:\ds9\ds9.exe  C:\directory\FITS FILE HERE -savefits我希望python程序能够从一行代码中复制特定部分并将它们粘贴到“FITS FILE HERE”所在的位置。以下是按下第一个按钮时执行的功能。 f = open('C:/jah/list.txt') f1 = open('C:/jah/decompress.bat', 'a') def begin_wombocombo(): #Is function for first button     open('C:/jah/list.txt', 'w').close() #Clears 'list.txt'     open('C:/jah/decompress.bat', 'w').close() #Clears 'decompress.bat'     subprocess.call([r'C:/jah/newbat.bat']) #Dumps directory into 'list.txt'     doIHaveToCopyTheLine=False #Bool for whether or not the program has to copy line     for line in f.readlines(): #loops through all instances to find fz files and then pastes them into decompress.bat       if 'fits.fz' in line:         doIHaveToCopyTheLine=True       if doIHaveToCopyTheLine:         f1.write(line)     f1.close()     f.close()问题在于它只复制包含 fit.fz 文件的文本行。这意味着它会复制该行上的所有其他内容,例如创建文件的时间。有什么方法可以简单地单独复制和粘贴 fit.fz 文件?我将如何将这些字符串处理到 .bat 文件中?感谢您抽出宝贵时间,顺便说一句,第二个按钮只是执行“decompress.bat”,这是带有解压缩图像命令的文件。
查看完整描述

1 回答

?
Helenr

TA贡献1780条经验 获得超4个赞

我认为在 Python 中,这样的事情可以解决问题,而无需写出批处理文件等。


import os

import subprocess


target_directory = 'C:\\directory\\' # change this as required

zipped_files = [x for x in os.listdir(target_directory) 

                   if x.lower().endswith('.fits.fz')]

for filename in zipped_files:

    subprocess.call([r'C:\ds9\ds9.exe', os.path.abspath(filename), '-savefits'])


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

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号