0

我是编程和 python 的新手,正在尝试编写一个程序来处理天文数据。我有一个巨大的文件列表,命名为 ww_12m_no0021.spc、ww_12m_no0022.spc 等。我想将所有奇数文件和偶数文件移动到两个单独的文件夹中。

import shutil
import os


for file in os.listdir("/Users/asifrasha/Desktop/python_test/input"):
    if os.path.splitext(file) [1] == ".spc":
        print file
        shutil.copy(file, os.path.join("/Users/asifrasha/Desktop/python_test/output",file))

这实际上是将所有 spc 文件复制到不同的文件夹。我在如何只能将奇数文件(no0021、no0023……)复制到单独的文件夹中苦苦挣扎。任何帮助或建议将不胜感激!!!

4

2 回答 2

1
import os
import shutil

# Modify these to your need
odd_dir = "/Users/asifrasha/Desktop/python_test/output/odd"
even_dir = "/Users/asifrasha/Desktop/python_test/output/even"

for filename in os.listdir("/Users/asifrasha/Desktop/python_test/input"):
    basename, extenstion = os.path.splitext(filename)
    if extenstion == ".spc":
        num = basename[-4:]  # Get the numbers (i.e. the last 4 characters)
        num = int(num, 10)   # Convert to int (base 10)
        if num % 2:    # Odd
            dest_dir = odd_dir
        else:          # Even
            dest_dir = even_dir
        dest = os.path.join(dest_dir, filename)
        shutil.copy(filename, dest)

显然你可以简化一点;我只是想尽可能清楚。

于 2013-11-19T04:52:51.800 回答
0

假设您的文件命名ww_12m_no后跟数字:

if int(os.splitext(file)[0][9:])%2==1:
    #file is oddly numbered, go ahead and copy...

如果名称前半部分的长度发生变化,我会使用正则表达式......我没有测试代码,但这就是它的要点。我不确定这个问题是否属于这里......

于 2013-11-19T04:51:02.300 回答