首页 > 解决方案 > 在文件被读取并由变量分隔后将文件移动到文件夹

问题描述

我创建了一个 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()

现在这段代码可以正常工作,但是它将 Desktop/old/ 中的所有文件移动到 Desktop/new/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/')

标签: pythonloopsif-statementheaderfits

解决方案


您可以使用 shutil 模块来移动文件。

shutil.move(source,destination)

将源文件和目标文件定义为字符串,然后像这样传递它们shutil.move()

import shutil
if c == "A":
    shutil.move(source, destA)
elif c == "B":
    shutil.move(source, destB)

我还建议您了解 if 语句的工作原理。以下是一些资源:https ://www.tutorialspoint.com/python/python_if_else.htm、https : //www.w3schools.com/python/python_conditions.asp、https : //docs.python.org/3/tutorial /controlflow.html


推荐阅读