我正在尝试创建一个循环并提取位于文件夹中的一些文件段。我很容易在R中做到这一点,但在Python中我遇到了麻烦。我已经尝试过使用os和glob。
R中的代码如下所示:
## loop over all files
for (i in 1:length(file)) {
## extract file name
file.name <- strsplit(file[i],"\\.")[[1]][1]
## extract file header
file.head <- readLines(file[i], n = length(grep("#", readLines(file[i]))))
....
我在Python中创建的代码看起来像这样(路径是直接的):
for file in os.listdir(path):
## extract file name
filename = os.fsdecode(file)
## extract file header
tempfile = os.open(file, os.O_RDWR)
Altough我是Python的新手,我不相信这么简单的事情会非常耗时。我很感激帮助,因为我已经在网上寻找答案了。
答案 0 :(得分:0)
首先,您可以使用os.scandir
来获取路径,而不是文件名。
然后,使用file.readlines()
:
for file in os.scandir(path):
tempfile = os.open(file).readlines()
我不熟悉R语法,但看起来您希望得到所有以#
开头的行。要做到这一点,只需使用列表理解:
for file in os.scandir(path):
tempfile = [l for l in os.open(file).readlines() if l[0] == '#']
实际上,您可以直接遍历文件,这将迭代这些行:
for file in os.scandir(path):
tempfile = [l for l in os.open(file) if l[0] == '#']