python - 如何将 int 导出到 "txt"文件,然后在以后能够将它们作为 int 导入回来

标签 python

导出数据:

num = 0

exportData = open("results_file.txt", "a")


while num < len(runs) - 1:
    exportData.write(str(runs[num]) + "\n")
    num = num + 1

exportData.close()

将数据导入新文件:

runs = []

num = 1

count = len(open("results_file.txt").readlines(  ))
print(count)

importData = open("results_file.txt", "r")
while num < count:
    runs.append(importData.read(num))
    print(importData.read(num))
    num = num + 1
importData.close()

我的目标是将整数数组导出到一个文件(可以是除我关心的txt文件之外的其他文件),然后稍后将它们导入到一个新文件中并将它们用作整数(执行对它们进行数学运算)

我收到的错误(在第 28 行,我尝试使用数组中的第一个数字进行数学计算): 第 28 行,在 if running[num] < 7: TypeError: 'str' 和 'int' 实例之间不支持 '<'

runs = []

num = 1

count = len(open("results_file.txt").readlines(  ))
print(count)

importData = open("results_file.txt", "r")
while num < count:
    runs.append(int(importData.read(num)))
    print(importData.read(num))
    num = num + 1
importData.close()

添加 int() 会返回此错误: ValueError:以 10 为基数的 int() 的文字无效:'4\n1'

最佳答案

你并不是Pythonic,这里的许多答案也不是。那么,让我稍微清理一下您的代码。

from ast import literal_eval

with open("results_file.txt", "a") as exportData:
    for run in runs:
        exportData.write(str(run) + "\n")

runs = []
with open("results_file.txt", "r") as importData:
    runs.extend([literal_eval(x) for x in importData])

我将逐行分解:

from ast importliteral_eval 是将字符串解析为 python 对象的最安全方法。它比使用普通的旧 eval 更好,因为它不会运行任意代码。稍后我们将使用此函数来读取数据。

with open(...) as ... 是打开文件的最佳方式。它包含单个范围内的文件对象并捕获错误。在这里查看这个:Pep 343

for ... in ... 您使用的 For 循环根本不是 pythonoic。 Pythonic 方法是使用迭代器,无需计算行数并声明变量来跟踪...Python 对象跟踪自身。 (如果您需要计数器,我强烈建议您查找 enumerate() Enumerate() in Python

exportData.write(str(run) + "\n") 这里唯一的变化是,使用 pythonic for 循环,不需要索引 不再运行 列表。

runs = [] 我想你知道这是什么,但我必须在 with 语句中声明它,因为如果 with > 语句抛出一个错误,您要捕获它,runs 将被初始化。

我已经讨论过 with 语句。

runs.extend([literal_eval(x) for x in importData]) 有两件事发生。 extend 将一个列表附加到一个列表...酷。这里更有趣的部分是列表理解。 Here's a tutorial on list comprehensions 。一旦您熟悉了 for 循环,列表理解就是下一个 Python 步骤。为了进一步了解 Python 风格,这一行也可以替换为: runs.extend(map(literal_eval, importData))

就是这样,9 行。快乐的黑客攻击。

关于python - 如何将 int 导出到 "txt"文件,然后在以后能够将它们作为 int 导入回来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58190408/

相关文章:

python - wxpython 添加行到 TextCtrl

python - 根据两个列表的大小定义多个对象(python)

python - slurm 超出了 python 多处理的作业内存限制

python - 使用 Xarray 从 netCDF 文件中提取数据到高数据帧中的有效方法

python - 为什么 str.lstrip 会去掉一个额外的字符?

python - 检查目标时出现 Keras ValueError

python - XPath 选择条件匹配节点之后的节点

python - 将 NaN 添加到 pandas 系列时,保留 bool 和 float 之间的区别?

python - 使用 Python 实现带有套接字的 HTTP 客户端(没有 http 库)

python - Tensorflow,尽管运行 global_variable_initializer 但仍存在未初始化的变量