从python数组中获取文件名

从python数组中获取文件名,python,arrays,Python,Arrays,您好,我需要您帮助解决以下问题。 我正在分析看起来像这样的文件 @<TRIPOS>MOLECULE NAME123 line3 line4 line5 line6 @<TRIPOS>MOLECULE NAME434543 line3 line4 line5 @<TRIPOS>MOLECULE NAME343566 line3 line4 错误是 Traceback (most recent call last): File "<stdin>"

您好,我需要您帮助解决以下问题。 我正在分析看起来像这样的文件

@<TRIPOS>MOLECULE
NAME123
line3
line4
line5
line6
@<TRIPOS>MOLECULE
NAME434543
line3
line4
line5
@<TRIPOS>MOLECULE
NAME343566
line3
line4
错误是

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
TypeError: not all arguments converted during string formatting
回溯(最近一次呼叫最后一次):
文件“”,第2行,在
TypeError:在字符串格式化过程中并非所有参数都已转换

您的代码包括
”.mol2“%i
,它看起来应该是字符串插值,但没有提供要插值的占位符。假设您知道如何使用带%符号的字符串插值,那么您的意思可能类似于“
”.mol%s”%i

当您在Python中使用“%”后跟变量名时,它将在字符串中查找字符串格式序列并尝试对其进行格式化。在第二个代码段中,Python没有在字符串中找到格式说明符。

我建议使用更结构化的列表:

for line in molfile:
    if line.startswith("@"):
        mols.append([])
        mols[-1].append(line) # Keep first line
    else:
        mols[-1].append(line)
然后:


不,我是python新手。每个文件都应该以.mol2结尾,但这一个只输出第一个数组,而不是其他数组。我还需要@MOLECULE作为每个文件的第一行。很抱歉,仍然生成1个文件,而不是molsfori in mols中的所有可用数组:out_filename=I[1]。strip()+“.mol2”和open(out_filename,mode=“w”)as out_file:out_file.write(“”.join(i));嗯,这对我很有效:Idk心对心传输出了什么问题,但是我的,这些天线不是很粗糙吗?不过,我猜你已经成功了。
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
TypeError: not all arguments converted during string formatting
for line in molfile:
    if line.startswith("@"):
        mols.append([])
        mols[-1].append(line) # Keep first line
    else:
        mols[-1].append(line)
for i in mols:
    out_filename = i[0].strip() + ".mol2"
    with open(out_filename, mode="w") as out_file:
        out_file.write(''.join(i));