如何在不同目录下运行python文件
我有几个python文件,我想在不同的目录中运行,在那里它将从100个文件中搜索特定的模式。假设我在如何在不同目录下运行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
/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)