【问题标题】:iterate through files and name output file after input with extension using python使用python输入扩展名后遍历文件并命名输出文件
【发布时间】:2012-05-31 13:12:21
【问题描述】:

新手python程序员在这里。我已经写了一个脚本,想修改 start 以便它通过文件夹中的文件运行,所以我不必每次都更改输入和输出文件扩展名。

输入文件的文件夹包含'chr1'、'chr2'、'chrx'等染色体文件。 我想输出到不同的文件夹和路径,并使用输入文件作为输出文件的基础,同时还添加一个扩展名,例如“windowstatistics”。例如,输入文件“chr1”将作为“chr1windowstatistics”输出到不同的文件夹中。

这几天我一直在尝试解决这个问题,但没有找到可行的解决方案。

目前我有:

import os
import glob

path = '/man/genotyping/Conservation/splitbychrom/'
for infile in glob.glob( os.path.join(path, 'Chr*') ):


    inputfile = open(infile, 'r') 
    output = os.rename(inputfile + ".out", 'w')

有谁知道如何让它工作,我不介意它的完成方式是否完全不同,我只想能够运行一次脚本并遍历文件。

如果我需要重新表述问题以便清楚起见,请告诉我。提前感谢您的所有帮助。真的很感激。

【问题讨论】:

  • 因此,您希望输出文件位于另一个文件夹中,并根据输入文件的名称命名。您能否举一个输入/输出文件名和目录的示例,以确保我理解您想要的内容?
  • 我认为你应该在提问之前阅读 os.rename 的文档g

标签: python input loops file-extension


【解决方案1】:

只要写下你想要的——我不清楚。

  1. 要重命名吗?然后告诉os.rename() 你想重命名什么以及改成什么。在您的情况下,您希望将 orognal 文件重命名为一个新名称,该名称肯定不是 wos.rename(infile, newfilename)也是如此。

  2. 您想处理输出数据并将其放在其他地方吗?然后打开文件进行写入,并使用正确的文件名:do output = open(infile + ".out", 'w')

尤其不要将文件名与文件对象混淆,尤其是函数的工作原理。

【讨论】:

  • 以上内容很方便,因为您的文件名显然没有扩展名。如果你的文件名确实有扩展名,你可以使用 os.path.split 和 os.path.splitext 来分隔文件名、扩展名和文件夹名。
【解决方案2】:

要重命名文件: os.rename(infile, infile + ".out")

os.rename 有两个字符串:源路径,目标路径。未使用“输出”的分配。

复制文件(在 *nix 中): os.system("cp"+infile+""+infile"+".out")

【讨论】:

  • 这会将输出直接馈送到终端
  • 我想我误解了你的问题。你想复制文件吗?如果是这样,您将必须运行 exec 系统命令。你的路径看起来 *nix,所以我建议: os.system ("cp infile infile" + ".out")
  • 对不起 - 错字。要复制,请使用: os.system ("cp " + infile + " " + infile" + ".out")
  • @Tiksi 然后你有一个 infile 包含空格或引号字符等,你被咬了。最好使用subprocess.call(['cp', infile, infile+'.out'])shutil
  • @glglgl 一个很好的观点。但是,在复制/创建文件时还有更多考虑因素,例如:如果要将额外的任意文件夹注入到不存在的目标路径中。这将是一个问题。这样的事情是需要考虑的。这只是我暗示的 shell 复制操作的一般方法,而不是使用现成的 os 模块。
猜你喜欢
  • 1970-01-01
  • 2016-12-06
  • 2019-05-16
  • 2021-12-28
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 2018-08-12
相关资源
最近更新 更多