[英]Different output format than expected
我編寫了代碼來閱讀以下文本文件
Generated by trjconv : a bunch of waters t= 0.00000
3000
1SOL OW 1 -1.5040 2.7580 0.6820
1SOL HW1 2 1.4788 2.7853 0.7702
1SOL HW2 3 1.4640 2.8230 0.6243
2SOL OW 4 1.5210 0.9510 2.2050
2SOL HW1 5 -1.5960 0.9780 2.1520
2SOL HW2 6 1.4460 0.9940 2.1640
1000SOL OW 2998 1.5310 1.7952 2.1981
1000SOL HW1 2999 1.4560 1.7375 -2.1836
1000SOL HW2 3000 1.6006 1.7369 2.2286
3.12736 3.12736 3.12736
Generated by trjconv : a bunch of waters t= 9000.00000
3000
1SOL OW 1 1.1579 0.4255 2.1329
1SOL HW1 2 1.0743 0.3793 2.1385
書面代碼:
F = open('Data.gro', 'r')
A = open('TTT.txt', 'w')
XO = []
I = range(1, 10)
with open('Data.gro') as F:
for line in F:
if line.split()[0] == '3000':
A.write('Frame' + '\n')
for R in I:
line = next(F)
P = line.split()
x = float(P[3])
XO.append(x)
if line.split()[2] == '3000':
print('Oxygen atoms XYZ coordinates:')
A.write('Oxygen atoms XYZ coordinates:' + '\n')
A.write("%s\n" % (XO))
XO
XO[0] - XO[1]
XO = []
else:
pass
else:
pass
A.close()
第一個問題:
我的問題是輸出文本文件如下所示。 它在文本文件中打印為一行。
FrameOxygen atoms XYZ coordinates:[-1.504, 1.4788, 1.464, 1.521, -1.596, 1.446, 1.531, 1.456, 1.6006]FrameOxygen atoms XYZ coordinates:[1.1579, 1.0743, 1.1514, 2.2976, 2.2161, 2.3118, 2.5927, -2.5927, 2.5365]
輸出應如下所示。
Frame
Oxygen atoms XYZ coordinates:
[-1.504, 1.4788, 1.464, 1.521, -1.596, 1.446, 1.531, 1.456, 1.6006]
Frame
Oxygen atoms XYZ coordinates:
[1.1579, 1.0743, 1.1514, 2.2976, 2.2161, 2.3118, 2.5927, -2.5927, 2.5365]
但是當我在閱讀時,它會在每個分離點的末尾顯示'\\ n'。 有沒有人有想法。
第二個問題
下一個問題是僅當我將粘貼代碼復制到python shell中時才會生成。 如果雙擊我的'code.py'文件,它不會生成put文件。 將粘貼代碼復制到python shell中時沒有錯誤。
1)您正在使用哪個平台和編輯器?
'\\ n'應按預期工作。
我懷疑你在Windows中運行代碼,並使用記事本來檢查文件。 嘗試使用寫字板或其他功能更強大的編輯器打開TTT.txt。 結果應該是預期的。
2)如果你在MS Windows中點擊腳本加倍,你很可能錯過了python打印的一些例外。 嘗試在命令提示符下運行它:
python code.py
安東尼是正確的。
Windows有這個問題。 使用寫字板打開文件。
回答你的第一個問題:
'\\n'
(轉義的n
)是換行符。
回答你的第二個問題:
粘貼到外殼中時經常遇到的問題是,粘貼發生的速度比外殼處理時快,這意味着命令行可能會被外殼忽略。
您可能遇到的另一個問題,特別是如果您將上述代碼粘貼到shell中,則是不一致的縮進。
您的if和else沒有對齊,可能是因為您僅在前一行縮進了3個空格。
if line.split()[2] == '3000':
print('Oxygen atoms XYZ coordinates:')
A.write('Oxygen atoms XYZ coordinates:' + '\n')
A.write("%s\n" % (XO))
XO
XO[0] - XO[1]
XO = []
else:
pass
此外,您可以嵌套文件的開頭。 特別是,這條線是多余的,可以刪除:
F = open('Data.gro', 'r')
你可以這樣做:
...
with open('Data.gro') as F:
with open('TTT.txt', 'w') as A:
...
因此,如果您在編寫文件時出錯,您至少仍會關閉它。 (這意味着你可以刪除最后的A.close()。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.