循环文件并在Python中提取段

时间:2017-10-24 02:40:52

标签: python r python-3.x

我正在尝试创建一个循环并提取位于文件夹中的一些文件段。我很容易在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的新手,我不相信这么简单的事情会非常耗时。我很感激帮助,因为我已经在网上寻找答案了。

1 个答案:

答案 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] == '#']