我正在XPsp3 w/python 2.7上编写和测试代码。我在2003服务器w/python 2.7上运行代码。我的dir结构会像这样
d:\ssptemp
d:\ssptemp\ssp9-1
d:\ssptemp\ssp9-2
d:\ssptemp\ssp9-3
d:\ssptemp\ssp9-4
d:\ssptemp\ssp10-1
d:\ssptemp\ssp10-2
d:\ssptemp\ssp10-3
d:\ssptemp\ssp10-4
在每个目录中都有一个或多个文件,文件名中包含“IWPCPatch”。
在其中一个文件(每个目录中一个)中,将有一行“IWPCPatchFinal_a.wsf”
我做的是
1)os.walk-cross-all-dirs under d:\ssptemp
2)查找文件名中包含“IWPCPatch”的所有文件
3)检查“IWPCPatchFinal_a.wsf”文件的内容
4)如果内容为真,则将该文件的路径添加到列表中。
我的问题是在我的XP机器上它工作得很好。如果我打印出列表的结果,我会按照上面列出的顺序得到几个项目。
当我把它移到server 2003机器上时,我以不同的顺序得到相同的内容。它是ssp10-X,然后是ssp9-X。这导致我在程序中的另一个区域出现问题。
从我的输出中可以看出它以错误的顺序开始os.walk,但我不知道为什么会发生这种情况。
import os
import fileinput
print "--createChain--"
listOfFiles = []
for path, dirs, files in os.walk('d:\ssptemp'):
print "parsing dir(s)"
for file in files:
newFile = os.path.join(path,file)
if newFile.find('IWPCPatch') >= 0:
for line in fileinput.FileInput(newFile):
if "IWPCPatchFinal_a.wsf" in line:
listOfFiles.append(newFile)
print "Added", newFile
for item in listOfFiles:
print "list item", item
os.walk
中目录的顺序不一定是按字母顺序排列的(我认为这实际上取决于它们如何存储在文件系统的目录中)。如果不更改目录内容(即,重复调用将返回相同的顺序),但顺序不一定是按字母顺序排列的,那么在相同的确切目录下(在相同的文件系统上,)可能是稳定的。如果你想有一个有序的文件名列表,你必须建立列表,然后自己排序。
相关问题 更多 >
编程相关推荐