簡體   English   中英

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

[英]How do I copy specific strings from a text file with python?

我在天文學領域工作,我用來解開望遠鏡拍攝的圖像的過程非常繁瑣。 圖像的格式是'fits.fz',代表fits.fits-zipped。 我想將這些解壓縮為'.fits'。 我已經在開發一個簡化解壓縮過程的程序。 我通過Python和Tkinter創建了一個帶有兩個按鈕的圖形界面。 第一個按鈕創建一個名為'list.txt'的文本文件,然后執行一個預先存在的.bat文件,該文件將特定目錄中以'fits.fz'結尾的每個文件的名稱轉儲到'list.txt'中。 第一個按鈕也應該將文件的特定名稱復制到另一個bat文件中的特定位置。 另一個.bat文件名為'Decompress.bat',並且應該對'list.txt'中的每個文件使用以下命令:

 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()

這個問題是它只復制具有fits.fz文件的文本行。 這意味着它會復制該行上的所有其他內容,例如創建文件時。 有沒有辦法簡單地復制和粘貼fits.fz文件? 我如何將這些字符串用於.bat文件?

感謝您的時間,順便說一下,第二個按鈕只執行'decompress.bat',這是帶有解壓縮圖像命令的文件。

我認為在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'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM