读取文件并将其分隔后,将文件移动到文件夹

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了读取文件并将其分隔后,将文件移动到文件夹相关的知识,希望对你有一定的参考价值。

我创建了一个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/')
答案

您可以使用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.htmhttps://www.w3schools.com/python/python_conditions.asphttps://docs.python.org/3/tutorial/controlflow.html

以上是关于读取文件并将其分隔后,将文件移动到文件夹的主要内容,如果未能解决你的问题,请参考以下文章

将脚本移动到 gitlab-ci.yml 中的单独文件中以避免代码重复并将其包含在多个文件中

Cpp:将字符串片段解析为元组

从 BigQuery 读取数据并将其写入云存储上的 avro 文件格式

使用 pyspark 更改分隔符并将其保存为 HDFS 中的文本文件

创建文件后从 Windows 窗体保存 C#

编写一个程序, 将 a.txt 文件中的单词与 b.txt 文件中的 单词交替合并到 c.txt 文件中, a.txt 文件中的单词用回车符 分隔, b.txt 文件中用回车或空格进行分隔。(代码片段