在 Python 中移动具有非常规文件扩展名的文件
moving files with unconventional file extensions in Python
我被困在我的脚本中应该执行以下操作的部分:
一种。遍历源目录。
b.将每个文件(名称 = GUID.file 扩展名)移动到以该文件的 GUID 命名的目标文件夹。
理论上,这个问题很简单,可以在 Python 中用 os.walk() 和 os.rename() 解决。复杂的是,其中一些文件的文件扩展名是非常规的,如以下屏幕截图所示:
作为解决方法,我使用了 Commons.IO Java 库。然而,当我尝试实例化 File 对象时,我的脚本在最后 3 行出错。我做错了什么?
脚本:
import os
import codecs
import shutil
import datetime
import sys
from org.apache.commons.io import FileUtils
from org.apache.commons.io.filefilter import TrueFileFilter
from java.io import File
sourceDirectoryRoot = 'P:/Output/Export18/BAD'
sourceDirectory = sourceDirectoryRoot + '/NATIVES'
for source in FileUtils.iterateFiles(File(sourceDirectory),TrueFileFilter.INSTANCE,TrueFileFilter.INSTANCE):
path = source.getPath().replace('\', '/')
file = source.getName()
fileparts = path.split(".")
ext = fileparts[len(fileparts) - 1]
destDirectory = sourceDirectoryRoot + '/{' + file[0:36] + '}/' + '[Document Renamed].' + ext
print path
print destDirectory
File s = new File(path)
File d = new File(destDirectory)
FileUtils.moveFile(s, d)
错误(部分字符串):
Script failed due to an error:
File "<script>", line 21
File s = new File(path)
^
SyntaxError: no viable alternative at input 's'
at org.python.core.ParserFacade.fixParseError(ParserFacade.java:92)
由于语法无效,您收到解析器错误。
在Python中你没有指定变量类型,或者使用new
实例化新对象
File s = new File(path)
File d = new File(destDirectory)
应该是
s = File(path)
d = File(destDirectory)
来自Jython docs:
如果你有 Java class
public class Beach {
private String name;
private String city;
public Beach(String name, String city){
this.name = name;
this.city = city;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}
您可以像这样从 Jython 中使用它:
>>> import Beach
>>> beach = Beach("Cocoa Beach","Cocoa Beach")
>>> beach.getName()
u'Cocoa Beach'
>>> print beach.getName()
Cocoa Beach
我被困在我的脚本中应该执行以下操作的部分: 一种。遍历源目录。 b.将每个文件(名称 = GUID.file 扩展名)移动到以该文件的 GUID 命名的目标文件夹。
理论上,这个问题很简单,可以在 Python 中用 os.walk() 和 os.rename() 解决。复杂的是,其中一些文件的文件扩展名是非常规的,如以下屏幕截图所示:
作为解决方法,我使用了 Commons.IO Java 库。然而,当我尝试实例化 File 对象时,我的脚本在最后 3 行出错。我做错了什么?
脚本:
import os
import codecs
import shutil
import datetime
import sys
from org.apache.commons.io import FileUtils
from org.apache.commons.io.filefilter import TrueFileFilter
from java.io import File
sourceDirectoryRoot = 'P:/Output/Export18/BAD'
sourceDirectory = sourceDirectoryRoot + '/NATIVES'
for source in FileUtils.iterateFiles(File(sourceDirectory),TrueFileFilter.INSTANCE,TrueFileFilter.INSTANCE):
path = source.getPath().replace('\', '/')
file = source.getName()
fileparts = path.split(".")
ext = fileparts[len(fileparts) - 1]
destDirectory = sourceDirectoryRoot + '/{' + file[0:36] + '}/' + '[Document Renamed].' + ext
print path
print destDirectory
File s = new File(path)
File d = new File(destDirectory)
FileUtils.moveFile(s, d)
错误(部分字符串):
Script failed due to an error:
File "<script>", line 21
File s = new File(path)
^
SyntaxError: no viable alternative at input 's'
at org.python.core.ParserFacade.fixParseError(ParserFacade.java:92)
由于语法无效,您收到解析器错误。
在Python中你没有指定变量类型,或者使用new
实例化新对象
File s = new File(path)
File d = new File(destDirectory)
应该是
s = File(path)
d = File(destDirectory)
来自Jython docs:
如果你有 Java class
public class Beach {
private String name;
private String city;
public Beach(String name, String city){
this.name = name;
this.city = city;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}
您可以像这样从 Jython 中使用它:
>>> import Beach
>>> beach = Beach("Cocoa Beach","Cocoa Beach")
>>> beach.getName()
u'Cocoa Beach'
>>> print beach.getName()
Cocoa Beach