-2

我想创建一个 python 脚本来做 3 件事:

  • 1)接受用户输入以导航到文件目录
  • 2) 确认文件内容(文件夹中需要一组特定的文件才能继续执行脚本)
  • 3)进行查找和替换
  • 截至目前的代码:

    import os, time
    from os.path import walk
    
    mydictionary = {"</i>":"</em>"}
    
    for (path, dirs, files) in os.walk(raw_input('Copy and Paste Course Directory Here: ')):
        for f in files:
            if f.endswith('.html'):
                filepath = os.path.join(path,f)
                s = open(filepath).read()
                for k, v in mydictionary.iteritems(): terms for a dictionary file and replace
                    s = s.replace(k, v)
                f = open(filepath, 'w')
                f.write(s)
                f.close()
    

    现在我有第 1 部分和第 3 部分,我只需要第 2 部分。

    对于第 2 部分,尽管我需要确认用户将指定的目录中仅存在 html 文件,否则脚本将提示用户输入正确的文件夹目录(其中将包含 html 文件)

    谢谢

    4

    1 回答 1

    2

    据我了解,这是您的伪代码:

    Ask user for directory
    If all files in that directory are .html files:
        Do the search-and-replace stuff on the files
    Else:
        Warn and repeat from start
    

    我不认为你真的想要在这里递归遍历,所以首先我会用一个平面列表来写:

    while True:
        dir = raw_input('Copy and Paste Course Directory Here: ')
        files = os.listdir(dir)
        if all(file.endswith('.html') for file in files):
            # do the search and replace stuff
            break
        else:
            print 'Sorry, there are non-HTML files here. Try again.'
    

    除了将“repeat from start”翻译成while True带有 a 的循环之外break,这几乎是英文伪代码的逐字翻译。

    如果您确实需要递归遍历子目录,您可能不想将其编写all为单行。写“结果的任何成员的第三个成员的所有成员都os.walk以”结尾'.html'并不难,但它会很难阅读。但是如果你把那个英文描述变成更容易理解的东西,你应该能够看到如何直接把它变成代码。

    于 2012-12-21T20:52:59.330 回答