Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:读取多个文件并根据其内容将其移动到一个目录中_Python - Fatal编程技术网

Python:读取多个文件并根据其内容将其移动到一个目录中

Python:读取多个文件并根据其内容将其移动到一个目录中,python,Python,我对python非常陌生,但我想将其用于以下任务: 读取目录中的所有文件 在文件的所有行中查找特定字符 如果此字符在文件中仅出现一次,请将文件复制到特定目录中 我尝试了以下代码: #! /usr/bin/python import glob import shutil path = '/xxxx/Dir/*.txt' files=glob.glob(path) for file in files: f=open(file) f.read()

我对python非常陌生,但我想将其用于以下任务:

  • 读取目录中的所有文件
  • 在文件的所有行中查找特定字符
  • 如果此字符在文件中仅出现一次,请将文件复制到特定目录中
  • 我尝试了以下代码:

    #! /usr/bin/python
    
    import glob
    import shutil
    
    
    
    path = '/xxxx/Dir/*.txt'   
    files=glob.glob(path)   
    for file in files:     
        f=open(file)  
        f.read()
        total = 0
        for line in f:
            if "*TPR_4*" in line:
                total_line = total + 1
                if total_line == 1:
                    shutil.copy(f, 'xxxx/Test/')
    f.close()
    
    然而,它不起作用。 有什么建议吗

    shutil.copy()
    将文件名作为参数,而不是打开文件。您应该更改通话:

    shutil.copy(file, 'xxxx/Test/')
    
    另外:
    文件
    是一个糟糕的名称选择。它是一个内置函数名。

    shutil.copy()
    将文件名作为参数,而不是打开的文件。您应该更改通话:

    shutil.copy(file, 'xxxx/Test/')
    
    另外:
    文件
    是一个糟糕的名称选择。它是一个内置函数名。

    shutil.copy()
    将文件名作为参数,而不是打开的文件。您应该更改通话:

    shutil.copy(file, 'xxxx/Test/')
    
    另外:
    文件
    是一个糟糕的名称选择。它是一个内置函数名。

    shutil.copy()
    将文件名作为参数,而不是打开的文件。您应该更改通话:

    shutil.copy(file, 'xxxx/Test/')
    

    另外:
    文件
    是一个糟糕的名称选择。这是一个内置函数的名称。

    逻辑不太正确,而且您混淆了
    total
    total\u line
    shutil。copy
    以名称而不是对象作为参数。请注意,
    if。。第
    行中不使用globbing语法,即要搜索
    TPR\u 4
    ,请使用
    “TPR\u 4”
    ,而不是
    “*TPR\u 4*”
    。请尝试以下操作:

    #! /usr/bin/python    
    import glob
    import shutil
    
    path = '/xxxx/Dir/*.txt'   
    files=glob.glob(path)   
    for file in files:     
        f=open(file)
        total = 0
        for line in f:
            if "TPR_4" in line:
                total += 1
                if total > 1:
                    break  # no need to go through the file any further
        f.close()
        if total == 1:
            shutil.copy(file, 'xxxx/Test/')
    

    逻辑不太正确,而且您混淆了
    total
    total\u line
    shutil。copy
    以名称而不是对象作为参数。请注意,
    if。。第
    行中不使用globbing语法,即要搜索
    TPR\u 4
    ,请使用
    “TPR\u 4”
    ,而不是
    “*TPR\u 4*”
    。请尝试以下操作:

    #! /usr/bin/python    
    import glob
    import shutil
    
    path = '/xxxx/Dir/*.txt'   
    files=glob.glob(path)   
    for file in files:     
        f=open(file)
        total = 0
        for line in f:
            if "TPR_4" in line:
                total += 1
                if total > 1:
                    break  # no need to go through the file any further
        f.close()
        if total == 1:
            shutil.copy(file, 'xxxx/Test/')
    

    逻辑不太正确,而且您混淆了
    total
    total\u line
    shutil。copy
    以名称而不是对象作为参数。请注意,
    if。。第
    行中不使用globbing语法,即要搜索
    TPR\u 4
    ,请使用
    “TPR\u 4”
    ,而不是
    “*TPR\u 4*”
    。请尝试以下操作:

    #! /usr/bin/python    
    import glob
    import shutil
    
    path = '/xxxx/Dir/*.txt'   
    files=glob.glob(path)   
    for file in files:     
        f=open(file)
        total = 0
        for line in f:
            if "TPR_4" in line:
                total += 1
                if total > 1:
                    break  # no need to go through the file any further
        f.close()
        if total == 1:
            shutil.copy(file, 'xxxx/Test/')
    

    逻辑不太正确,而且您混淆了
    total
    total\u line
    shutil。copy
    以名称而不是对象作为参数。请注意,
    if。。第
    行中不使用globbing语法,即要搜索
    TPR\u 4
    ,请使用
    “TPR\u 4”
    ,而不是
    “*TPR\u 4*”
    。请尝试以下操作:

    #! /usr/bin/python    
    import glob
    import shutil
    
    path = '/xxxx/Dir/*.txt'   
    files=glob.glob(path)   
    for file in files:     
        f=open(file)
        total = 0
        for line in f:
            if "TPR_4" in line:
                total += 1
                if total > 1:
                    break  # no need to go through the file any further
        f.close()
        if total == 1:
            shutil.copy(file, 'xxxx/Test/')
    

    我为你的问题写了一些代码,也许对你有好处

    import os, shutil
    
    dir_path = '/Users/Bob/Projects/Demo'
    some_char = 'abc'
    dest_dir = "/Users/Bob/tmp"
    for root, dirs, files in os.walk(dir_path):
        for _file in files:
            file_path = os.path.join(root, _file)
            copy = False
            with open(file_path, 'r') as f:
                while True:
                    line = f.readline()
                    if not line:
                        break
                    if str(line).find(some_char) > -1:
                        copy = True
                        break
                if copy:
                    shutil.copy(file_path, dest_dir)
                    print file_path, ' copy...'
    

    我为你的问题写了一些代码,也许对你有好处

    import os, shutil
    
    dir_path = '/Users/Bob/Projects/Demo'
    some_char = 'abc'
    dest_dir = "/Users/Bob/tmp"
    for root, dirs, files in os.walk(dir_path):
        for _file in files:
            file_path = os.path.join(root, _file)
            copy = False
            with open(file_path, 'r') as f:
                while True:
                    line = f.readline()
                    if not line:
                        break
                    if str(line).find(some_char) > -1:
                        copy = True
                        break
                if copy:
                    shutil.copy(file_path, dest_dir)
                    print file_path, ' copy...'
    

    我为你的问题写了一些代码,也许对你有好处

    import os, shutil
    
    dir_path = '/Users/Bob/Projects/Demo'
    some_char = 'abc'
    dest_dir = "/Users/Bob/tmp"
    for root, dirs, files in os.walk(dir_path):
        for _file in files:
            file_path = os.path.join(root, _file)
            copy = False
            with open(file_path, 'r') as f:
                while True:
                    line = f.readline()
                    if not line:
                        break
                    if str(line).find(some_char) > -1:
                        copy = True
                        break
                if copy:
                    shutil.copy(file_path, dest_dir)
                    print file_path, ' copy...'
    

    我为你的问题写了一些代码,也许对你有好处

    import os, shutil
    
    dir_path = '/Users/Bob/Projects/Demo'
    some_char = 'abc'
    dest_dir = "/Users/Bob/tmp"
    for root, dirs, files in os.walk(dir_path):
        for _file in files:
            file_path = os.path.join(root, _file)
            copy = False
            with open(file_path, 'r') as f:
                while True:
                    line = f.readline()
                    if not line:
                        break
                    if str(line).find(some_char) > -1:
                        copy = True
                        break
                if copy:
                    shutil.copy(file_path, dest_dir)
                    print file_path, ' copy...'
    


    如果你让它总是通过考试,它会复制吗?谢谢,答案是否。如果你让它总是通过考试,它会复制吗?谢谢,答案是否。如果你让它总是通过考试,它会复制吗?谢谢,答案是否。如果你让它总是通过考试,它会复制吗?我在一个文件测试集上尝试了它,它完成了我理解它应该做的事情。在文件夹Dir中有更多的.txt文件。我运行它,测试文件夹是空的,上面提到的文件应该在那里。啊,所以你不是在寻找字符串
    “*TPR\u 4*”
    ,而是在寻找
    “TPR\u 4”
    ?在这种情况下,不需要在那里有星号,它不是一个球形模式。哦,我明白了,您还想排除包含多行字符串的文件。如果你最多有一行这样的代码,代码可能会更简单。不,你是对的,我想排除那些有不止一次模式的文件。明白了,它似乎可以工作!非常感谢,马上接受并竖起大拇指!什么东西不起作用?我在一个文件测试集上尝试了它,它完成了我理解它应该做的事情。在文件夹Dir中有更多的.txt文件。我运行它,测试文件夹是空的,上面提到的文件应该在那里。啊,所以你不是在寻找字符串
    “*TPR\u 4*”
    ,而是在寻找
    “TPR\u 4”
    ?在这种情况下,不需要在那里有星号,它不是一个球形模式。哦,我明白了,您还想排除包含多行字符串的文件。如果你最多有一行这样的代码,代码可能会更简单。不,你是对的,我想排除那些有不止一次模式的文件。明白了,它似乎可以工作!非常感谢,马上接受并竖起大拇指!什么东西不起作用?我在一个文件测试集上尝试了它,它完成了我理解它应该做的事情。在文件夹Dir中有更多的.txt文件。我运行它,测试文件夹是空的,上面提到的文件应该在那里。啊,所以你不是在寻找字符串
    “*TPR\u 4*”
    ,而是在寻找
    “TPR\u 4”
    ?在这种情况下,不需要在那里有星号,它不是一个球形模式。哦,我明白了,您还想排除包含多行字符串的文件。如果你最多有一行这样的代码,代码可能会更简单。不,你是对的,我想排除那些有不止一次模式的文件。明白了,它似乎可以工作!非常感谢,马上接受并竖起大拇指!什么东西不起作用?我在一个文件测试集上尝试了它,它完成了我理解它应该做的事情。文件夹Dir中有more.t