Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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_Python 3.x - Fatal编程技术网

如何在不同目录下运行python文件

如何在不同目录下运行python文件,python,python-3.x,Python,Python 3.x,我有几个python文件,我想在不同的目录中运行,在那里它将从100个文件中搜索特定的模式。假设我在/home/jay目录下有python文件,在/home/jay/data目录下有100个文件 我能做些什么来实现这一点 我的python代码是: import re import os os.chdir(r'/home/jay/data/') files = open('*') for line in files : line = line.rstrip() if re.sea

我有几个python文件,我想在不同的目录中运行,在那里它将从100个文件中搜索特定的模式。假设我在
/home/jay
目录下有python文件,在
/home/jay/data
目录下有100个文件

我能做些什么来实现这一点

我的python代码是:

import re
import os

os.chdir(r'/home/jay/data/')
files = open('*')
for line in files :
    line = line.rstrip()
    if re.search('Model' , line):
        print(line)
我遇到以下错误

Traceback (most recent call last):
  File "/home/jay/test.py", line 4, in ?
    files = open('*')
IOError: [Errno 2] No such file or directory: '*'
你在找我。它将为您提供指定目录中所有文件名的列表,默认为当前目录。
“*”
不起作用的原因是它是一个命令行构造,由shell扩展。您只能在支持这种扩展的shell或脚本中真正使用它。由于
open
不会遍历shell,因此它会尝试查找实际名为
*
的文件。另外,
open
一次只能处理一个文件

import os, os.path, re os.chdir(r'/home/jay/data/') files = os.listdir() for name in files: # Skip directories if os.path.isdir(name): continue with open(name) as file: for line in file: line = line.rstrip() if re.search('Model' , line): print(line) 我冒昧地完全删除了正则表达式,因为它只会在您有很多文件的情况下减慢速度。如果您确实在一些更复杂的场景中使用正则表达式,请在使用之前编译If


此外,如果需要,您可以在此处自由使用相对路径。例如,如果您总是从
/home/jay
运行,您可以在第二个示例中设置
folder='data'
而不是
folder='/home/jay/data'

进入Python站点软件包文件夹,从NumPy或其他站点打开setup.py,查看他们是如何获得所有文件名的。不确定我应该查找哪些文件。导入了其他模块,如BeautifulSoup、requests等。。python初学者,请原谅这是一个愚蠢的问题。如果你真的编写了
files=open(*)
你不会得到
IOError
,而是
SyntaxError
。请发布您的实际代码。
print(line)`
也是语法错误。此外,如果您的行真正读取的是
os.chdir(r'/home/jay/Data/'),则不会出现错误,说
没有这样的文件或目录:'/home/jay/Data/*'
。请修改你的代码@亚基姆皮罗琴科。谢谢。试试那个密码。给了我语法错误:文件“test.py”,第6行以open(名称)作为文件:^SyntaxError:invalid syntaxer您的第2个示例没有regex:File“test.py”,第7行以open(join(folder,name))作为文件:^SyntaxError:invalidsyntax@Jay. 看起来您的
之间存在问题。我运行这段代码没有问题。你到底是如何运行你的脚本的?我像正常人一样运行代码。来自我公司unix服务器的“python test.py”。
from os import listdir
from os.path import join, isdir

folder = '/home/jay/data'
files = listdir(folder)
for name in files:
    name = join(folder, name)
    # Skip directories
    if isdir(name):
        continue
    with open(name) as file:
        for line in file:
            line = line.rstrip()
            if 'Model' in line:
                print(line)