【问题标题】:How to move only *.java files with python?如何使用 python 仅移动 *.java 文件?
【发布时间】:2012-08-20 15:18:49
【问题描述】:

我有这样的目录树:

dir1
 - dir2
 - dir3
 - file1.java
 - file2.java
 - file3.cpp

我只想将 *.java 文件移动到当前目录中名为“java_files”的全新目录。怎么做?我读了shutil doc,但是...

这个:

def moveFiles() :
    source = "."
    destination = "java_files"
    if os.path.isfile(source):
        shutil.move(source, destination)

根本不工作......

我不想改用 shell 'mv'!

编辑:

我也试过这个:

def moveFiles() :
    source = "."
    destination = "java_files"
    dirList = os.listdir(source)
    for fname in  dirList:
        if fname.endswith(".java") :
            shutil.move(source, destination)

但它给出了:

File "test.py", line 95, in <module>
 main()   File "test.py", line 91, in main
 moveFils()   File "test.py", line 82, in move
 shutil.move(source, destination)   File "/usr/lib/python2.7/shutil.py", line 295, in move
 raise Error, "Cannot move a directory '%s' into itself '%s'." % (src, dst) shutil.Error:Cannot move a directory '.' into itself 'java_files'.

【问题讨论】:

  • 但是什么?如果文件名以 .java 结尾,您是否无法编写检查?

标签: python directory shutil


【解决方案1】:
if source.endswith('.java'):
    # do copy or move file

【讨论】:

【解决方案2】:

在这种情况下,我使用glob(它接受通配符和正则表达式)

#!/usr/bin/env python

import glob
import shutil
import os

source="."
destination = "/tmp/newDestination/"

if not(os.path.exists(destination)):
    os.makedirs(destination)
elif not(os.path.isdir(destination)):
    raise OSError("Kabooom! The destination %s exists, but is not a directory" % destination)

for javaFile in glob.glob(os.path.join(source, "*.java")):
    if os.path.isfile(javaFile):
        shutil.move(os.path.abspath(javaFile), destination)

【讨论】:

  • 当我拥有source="."destination="./java_files" 时,您提供的代码仅创建一个名为java_files 的文件...
  • 那是因为 java_files 不是目录,是吗? (或至少不存在)...它的行为类似于 mv foo /tmp/bar 如果 bar 不存在,它会将 file foo 移动到 file 在 /tmp/ 中调用 bar,而如果 bar 存在并且它是一个目录,它会将文件 foo 放入 bar 目录。我马上回来:D
  • 感谢您的回答!这是否意味着我必须先创建java_files 目录?好的,没问题!:)
  • 我的代码现在看起来像这样:pastie.org/private/kl2tnv4wyiczy8afmhzka 它运行良好,谢谢! ;* 是否可以从我的目录树移至java_filesdir2dir3?怎么办?
猜你喜欢
  • 2018-10-07
  • 1970-01-01
  • 2019-12-24
  • 1970-01-01
  • 1970-01-01
  • 2010-09-22
  • 2017-04-22
  • 1970-01-01
相关资源
最近更新 更多