我在天文學領域工作,我用來解壓縮從望遠鏡獲得的圖像的過程可能非常乏味。圖像的格式是“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'])
添加回答
舉報
0/150
提交
取消