我:我正在运行 Python 2.3.3,无法升级,而且我对 Python 没有太多经验。我的学习方法是谷歌搜索和阅读大量的 stackoverflow。
背景:我正在创建一个 python 脚本,其目的是将两个目录作为参数,然后对在这两个目录中找到的所有文件进行比较/差异。目录有子目录,也必须包含在 diff 中。每个目录都是一个列表,子目录是嵌套列表等等......
the two directories:
oldfiles/
a_tar_ball.tar
a_text_file.txt
nest1/
file_in_nest
nest1a/
file_in_nest
newfiles/
a_tar_ball.tar
a_text_file.txt
nest1/
file_in_nest
nest1a/
问题:通常一切都应该正常,因为旧文件中的所有文件都应该存在于新文件中,但在上面的示例中,“新文件/”中缺少“file_in_nest”之一。我希望打印一条错误消息,告诉我缺少哪个文件,但是当我使用“比较”函数的当前实例下方的代码结构时,除了最接近的目录之外,不知道任何其他目录。我想知道是否有内置的错误处理可以在递归阶梯中发送有关文件和目录的信息,并在我们进行时向其中添加信息。如果我只是打印丢失文件的文件名,我将不知道其中的哪一个,因为“oldfiles”中有两个“file_in_nest”
def compare(file_tree)
for counter, entry in enumerate(file_tree[0][1:]):
if not entry in file_tree[1]
# raise "some" error and send information about file back to the
# function calling this compare, might be another compare.
elif not isinstance(entry, basestring):
os.chdir(entry[0])
compare(entry)
os.chdir('..')
else:
# perform comparison (not relevant to the problem)
# detect if "some" error has been raised
# prepend current directory found in entry[0] to file information
break
def main()
file_tree = [['/oldfiles', 'a_tar_ball.tar', 'a_text_file.txt', \
[/nest1', 'file_in_nest', [/nest1a', 'file_in_nest']], \
'yet_another_file'], \
['/newfiles', 'a_tar_ball.tar', 'a_text_file.txt', \
[/nest1', 'file_in_nest', [/nest1a']], \
'yet_another_file']]
compare(file_tree)
# detect if "some" error has been raised and print error message
这是我在 stackoverflow 上的第一个活动,除了阅读 som 请告诉我是否应该改进这个问题!
//斯特凡