不在Python中打开特定的文本文件

时间:2016-02-03 14:57:31

标签: python text file-io

我有一个包含大量文本文件的文件夹。我有以下代码在执行时打开其目录中的所有文本文件,并将它们全部放在主文本文件中," result.txt"。

public static int getScreenWidth(Context context) {

        if (screenWidth == 0) {
            WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
            Display display = wm.getDefaultDisplay();
            Point size = new Point();
            display.getSize(size);
            screenWidth = size.x;
        }
        return screenWidth;
    }

我不希望此脚本打开" result.txt"。除result.txt之外的所有文本文件。我怎样才能做到这一点?我不希望它通过将其内容写入自身来复制result.txt

3 个答案:

答案 0 :(得分:3)

使用filter功能:

read_files = filter(lambda f : f != 'result.txt', glob.glob('*.txt'))

答案 1 :(得分:2)

好吧,你可以在遍历所有文件时过滤result.txt:

import glob

read_files = glob.glob("*.txt")

with open("result.txt", "wb") as outfile:
    for f in (file for file in read_files if file != "result.txt"):
        with open(f, "rb") as infile:
            outfile.write(infile.read())

或者,为了防止在read_files列表的进一步使用中出现错误,您可以在glob.glob之后从中删除"result.txt"

read_files = glob.glob("*.txt")
try:
    read_files.remove("result.txt")
except ValueError: #File result.txt does not exist yet
    pass

答案 2 :(得分:1)

您可以使用continue跳过该文件并开始循环的下一次迭代:

for f in read_files:
    if f == "result.txt":
        continue
    ...

或者,在开始循环之前过滤文件列表:

read_files = [f for f in glob.glob("*.txt") if f != "result.txt"]