Я создал скрипт Python, который читает переменную FILTER
из файлов в папке и выводит результат на экран. Однако существует 4 типа переменных, и я хотел бы, чтобы этот скрипт разделял их все на соответствующие папки. Например, переместить все файлы в папку с именем «V», если они имеют переменную FILTER = V
, если они имеют FILTER = B
, а затем переместить все файлы B
в папку с именем «B». какие файлы имеют фильтр на экране.
import glob
import pyfits
import shutil
myList = []
for fitsName in glob.glob('*.fits'):
hdulist = pyfits.open(fitsName)
b = hdulist[0].header['FILTER']
c = b
myList.append(c)
hdulist.close()
for item in sorted(myList):
print item
Результат на экране:
B
B
B
V
V
V
R
R
R
I
I
I
теперь с shutil кодом, который я запускаю;
import os
import glob
import pyfits
import shutil
myList = []
for fitsName in glob.glob('*.fits'):
hdulist = pyfits.open(fitsName)
hdu = hdulist[0]
prihdr = hdulist[0].header
a = hdulist[0].header['FILTER']
b = a
if b == "B":
shutil.move('/home/usr/Desktop/old/', '/home/usr/Desktop/new/B/')
myList.append(b)
hdulist.close()
Теперь этот код работает без проблем, но он перемещает все файлы на рабочем столе / старом / на рабочий стол / новый / B /, однако, некоторые файлы имеют b = V и другие переменные, так в чем здесь проблема? Как я могу указать имена файлов, которые имеют фильтры, которые я хотел, чтобы он мог автоматически перемещаться?
так же, как в приведенном выше коде, если c = FILTERNAME1 переместится в SOMEFOLDER1, если c = FILTERNAME2 переместится в SOMEFOLDER2 и т. Д. Я не могу написать рабочую строку кода для этого, поэтому любая помощь будет принята с благодарностью.
Решение;
import os
import glob
import pyfits
import shutil
for fitsName in glob.glob('*.fits'):
hdulist = pyfits.open(fitsName)
hdu = hdulist[0]
a = hdulist[0].header['FILTER']
if a == "B":
shutil.move(fitsName, '/home/usr/Desktop/new/B/')
if a == "V":
shutil.move(fitsName, '/home/usr/Desktop/new/V/')
if a == "R":
shutil.move(fitsName, '/home/usr/Desktop/new/R/')
if a == "I":
shutil.move(fitsName, '/home/usr/Desktop/new/I/')