编辑: 是的,所以我的问题的第一部分已经通过我在网上找到的这个漂亮的小代码解决了,它已被修改为适合和工作的一种享受, 我现在遇到的问题是制作和阅读创建的列表,我以为我使用lst = [lst]创建了列表,如下面的代码底部所示。 当我运行下面的代码时,它会从主程序中创建的文件中读取文本并删除[和]之间的所有内容并将其打印回给我,然后我得到此输出... ['47 0.660674766635005' ]
[ '48.957947570933946']
[ '49.249363925522836']
[ '37.88412609655603']
完美,除了似乎所有4个字符串都被制成1个列表并且它不会让我选择单个索引,我尝试使用print(lst [0])返回上面的列表但是如果我将其更改为lst [1]我的指数超出范围。 是否有可能进一步打破名单? 尝试使用列表索引的各种配置,通过手册页,我已经尝试了所有这些,必须接近 尝试制作列表但仍然遇到同样的问题。
所以在我看来,显而易见的答案是找到在文本文件中找到字符串的点,然后在搜索之前立即将其添加到列表中, 尝试了一些事情,比如创建一个新的列表,然后让代码搜索然后将append()添加到列表中但是没有,仍然存在问题。
在lst()中尝试x并在每个字符串的开头添加一个x,然后创建一个列表。 我认为这个选项可能是最好的,因为要算出所有mpg的平均值,我需要知道列表中有多少索引来划分数字。我只想把它算作X的 可能有一种更简单的方法,但我不确定。 刚刚阅读了下面链接的json手册页,这似乎是一个不错的选择。看起来很技术我将不得不玩这个
有任何线索请任何人
file_path = '/home/jon/Desktop/mpg.txt'
#Open the file in read mode. with operator is used to take care of try..except..finally block.
with open(file_path, "r") as f:
'''Read the contents of file. Be careful here as this will read the entire file into memory.
If file is too large prefer iterating over file object
'''
#count=0
content = f.read()
size = len(content)
start =0
while start < size:
# Read the starting index of & after the last [ index.
start = content.find("[",start)
# If found, continue else go to end of contents (this is just to avoid writing if statements.
start = start if start != -1 else size
# Read the starting index of ! after the last ] index.
end = content.find("]", start)
# Again, if found, continue else go to end of contents (this is just to avoid writing if statements.
end = end if end != -1 else size
'''print the contents between [ and ] (excluding both these operators.
If no ! character is found, print till the end of file.
'''
lst = content[start+1:end]
lst = [lst]
start = end + 1
print(lst)
抓走哈哈,我最终会到达那里
============== Original Question Bellow ===========
我制作了一个小程序,计算出每加仑英里数,并将结果写入文本文件。它可能不是最新的代码,但我正在学习,
在def writeToFile()函数中,我在将mpg写入文件之前将其转换为列表,程序实际上并没有使用该列表,那就是因为我认为它可能会更容易提取之后来自txt文件的[和]之间的数据。 正如您在本示例中从文本文件中的输出中看到的那样,mpg被[]
包围 Your mpg is...
[37.88412609655603]
我希望能够读取程序创建的文本文件并在[和]之间复制任何内容。
控制它的函数被定义为averageMiles()
,我已经离开并注释掉了我尝试过的一些代码,我还尝试了一些其他的东西,但没有任何工作,因为我喜欢。
我知道我很接近,但不能完全得到最后一点,
当我设法读取文本文件并将所有mpg数据提取到一个新列表中时,我将使其计算出所有mpg的平均值并打印到屏幕或文件以便数据必须是可读的
如果有人可以给我一个正确方向的观点,而不是那个很棒的答案。 我正在使用Python 3.3.2 Ubuntu
import time
import os, sys
GALLON = float(0.219969)
TIME = (time.strftime("%H:%M:%S"))
DATE = (time.strftime("%d/%m/%Y"))
print('enter litres...')
litre = input()
litre = float(litre)
gallonsUsed = litre * GALLON
print('Enter miles')
milesDriven = input()
milesDriven = float(milesDriven)
mpg = milesDriven / gallonsUsed
print('You\'re current mpg is \n '+str(mpg)+'')
#mpg = [mpg]
def averageMiles():
file_path = 'mpg.txt'
with open(file_path, "r") as f:
content = f.read()
size = len(content)
start =0
while start < size:
start = content.find("[",start)
start = start if start != -1 else size
end = content.find("]", start)
end = end if end != -1 else size
print(content[start+1:end])
start = end + 1
def checkFile():
if os.path.isfile('mpg.txt') == True:
writeToFile()
else:
print('File does not exist')
print(' Making File')
open("mpg.txt", 'w')
writeToFile()
def writeToFile():
file = open("mpg.txt", "r")
filedata = file.read()
file.close()
newLine = " ====================== \n Your mpg is...\n ---------------------- \n "+str([mpg])+" \n ---------------------- \n Time - "+str(TIME)+" \n Date - "+str(DATE)+" \n ====================== \n \n" + filedata
file = open("mpg.txt", "w")
file.write(newLine)
#outfile.write("\n".join(mpg))
file.close()
file = open("mpg.txt", "r")
filedata = file.read()
file.close()
averageMiles()
print(filedata)
#averageMiles()
checkFile()
编辑:整理帖子,试着让问题更清晰,再读一遍就没有意义了
编辑:我已经想出如何从文本文件中取回字符串,接下来只需要将其变成我可以使用的东西,试着把它变成一个列表,从那时起我可以使用任何数学工作超出平均每加仑英镑。接下来我需要学习一些数学。 这是到目前为止的代码,我已经将它附加到主代码,到目前为止它应该按计划运行 感谢您的建议,我将在完成后发布剩余的代码def averageMiles():
file_path = 'mpg.txt'
with open(file_path, "r") as f:
content = f.read()
size = len(content)
start =0
while start < size:
start = content.find("[",start)
start = start if start != -1 else size
end = content.find("]", start)
end = end if end != -1 else size
print(content[start+1:end])
start = end + 1
答案 0 :(得分:0)
好的,所以经过多次努力之后,我改变了我的方法并改为
lompg = str('newlist.txt')
mpgList = open(lompg, "r")
listData = mpgList.read()
mpgList.close()
listData=listData.split()
listLength = (len(listData))
data = sum(map(float, listData))
avg = data /listLength
print(avg)
我不是我想要的但它完成了工作,我所做的就是创建一个单独的文本文件,只存储mpg数字,然后在计算平均mpg时读回该文件。 完成的代码,如果有人想要它,在python 3.3.2中运行 要运行将代码保存到文件然后存储cd到位置文件,然后python3'filename.py'程序创建的所有文件都将在该位置生成
import time
import os
outfile = 'mpgoutput.txt' # record of mpg results
infile = 'mpglist.txt' # list of all mpg to calculate avg
GALLON = float(0.219969) # 1 litre, used to calculate litres into gallons
TIME = (time.strftime("%H:%M:%S"))
DATE = (time.strftime("%d/%m/%Y"))
print('enter litres...')
litre = input()
litre = float(litre)
gallonsUsed = litre * GALLON # work out litres into gallons
print('Enter miles')
milesDriven = input()
milesDriven = float(milesDriven)
mpg = milesDriven / gallonsUsed # mpg calculated
if os.path.isfile(infile) == False: # check if file exists if not create it
print('File does not exist')
print(' Making File')
open(infile, 'w')
mpglistread = open(infile, "r")
originalList = mpglistread.read()
mpglistread.close()
mpglistwrite = open(infile, "w")
mpglistwrite.write(''+str(mpg)+'\n' + originalList)
mpglistwrite.close()
mpgList = open(infile, "r")
listData = mpgList.read()
mpgList.close()
listData=listData.split()
listLength = (len(listData))
data = sum(map(float, listData))
avg = data /listLength
def checkFile():
if os.path.isfile(outfile) == True:
readFile()
else:
print('File does not exist')
print(' Making File')
open(outfile, 'w')
readFile()
def readFile():
file = open(outfile, "r")
filedata = file.read()
file.close()
newLine = " ====================== \n Your mpg is...\n ---------------------- \n "+str([mpg])+" \n ---------------------- \n Time - "+str(TIME)+" \n Date - "+str(DATE)+" \n ====================== \n \n" + filedata
file = open(outfile, "w")
file.write(newLine)
file.close()
file = open(outfile, "r")
filedata = file.read()
file.close()
print('\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n')
print(" ====================== \n Your mpg is...\n ++++++++++++++++++++++ \n "+str([mpg])+" \n ---------------------- \n Your average mpg is...\n ++++++++++++++++++++++ \n "+str(avg)+" \n ---------------------- \n Time - "+str(TIME)+" \n Date - "+str(DATE)+" \n ====================== \n \n")
checkFile()