Python多文件导入同一个模块出现多次重复导入记录

在Python中,单例可以通过class __new__方法限制创建,也可以导入其他模块创建单例,但是在一个程序中,有多个模块导入同一个配置的时候,如果导入方式不对,则不会有单例效果,如:

目录
test
├── config
	├──config.py
├── a.py
├── b.py

a.py
from config import config

import b
b.py
from test.config import config

config.py
print("config 初始化")

在test目录下有 a b两个模块,a导入b和config.config, b导入test.config.config,此时a和b中导入config的前缀不同,这种情况相当于a和b分别导入了不同的模块,是不会有单例的效果的

此时启动a.py的时候,会发现config 中的print被执行了两次

如果b.py中import改为

from config import config

会发现这时候就是单例效果了,config中的print只会被执行一次,推测应该是在Python导入模块的时候根据 from / import 导入文件的前缀进行匹配,而不是通过文件本身进行匹配

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用Python的csv模块来实现在同一个csv文件中多次写入行的操作,具体代码如下: ```python import csv # 打开csv文件,如果不存在则创建 with open('data.csv', 'a', newline='') as file: # 创建csv写入对象 writer = csv.writer(file) # 写入多行数据 writer.writerow(['张三', 18, '男']) writer.writerow(['李四', 20, '女']) writer.writerow(['王五', 22, '男']) ``` 以上代码会在同一个csv文件中多次写入行,每次写入一行数据。如果文件不存在,则会自动创建。注意,打开文件时需要指定`newline=''`参数,否则会出现空行。 ### 回答2: 你可以使用Python的csv模块来写入同一个CSV文件中的多行数据。首先,你需要导入csv模块,并打开或创建一个CSV文件对象。 ```python import csv # 打开CSV文件并创建文件对象 csv_file = open('data.csv', 'a', newline='') writer = csv.writer(csv_file) # 写入第一行数据 row1 = ['John', 'Doe', 25] writer.writerow(row1) # 写入第二行数据 row2 = ['Jane', 'Smith', 30] writer.writerow(row2) # 关闭CSV文件 csv_file.close() ``` 在这个例子中,我们首先使用`open()`函数来打开CSV文件,并传入文件名、打开模式('a'代表追加模式,即如果文件存在则追加内容,如果文件不存在则创建新文件)以及newline=''参数用于避免空行的生成。 接下来,我们使用`csv.writer()`函数创建一个写入器对象,并将其传递给CSV文件对象。 然后,我们可以调用`writer.writerow()`函数来一次写入每一行数据。在这个例子中,我们首先通过列表定义了第一行数据`row1`,然后使用`writer.writerow()`将其写入文件中;接着定义了第二行数据`row2`,并再次使用`writer.writerow()`将其写入文件中。 最后,我们使用`csv_file.close()`来关闭CSV文件。 这样,你就可以通过多次调用`writer.writerow()`来在同一个CSV文件中写入多行数据了。 ### 回答3: 使用 Python 可以很轻松地在同一个 CSV 文件中多次写入行。下面是一个示例代码: ```python import csv def write_to_csv(filename, data): with open(filename, 'a', newline='') as file: writer = csv.writer(file) writer.writerow(data) filename = 'data.csv' # 第一次写入行 data1 = ['John', 'Doe', 25] write_to_csv(filename, data1) # 第二次写入行 data2 = ['Jane', 'Smith', 30] write_to_csv(filename, data2) # 第三次写入行 data3 = ['Tom', 'Brown', 35] write_to_csv(filename, data3) ``` 上述代码定义了一个 `write_to_csv` 函数,它接受两个参数:`filename` 表示要写入的 CSV 文件名,`data` 表示要写入的行数据。在函数内部,使用 `open` 函数打开文件,并采用 'a' 模式进行追加写入。然后,利用 `csv.writer` 创建一个写入器对象,并使用 `writerow` 方法将行数据写入文件。 示例代码中使用了三次不同的行数据,你可以根据需求修改这些数据。此外,可以通过添加更多的 `write_to_csv` 函数调用来进行更多的写入操作。运行以上代码后,数据将被追加写入到名为 `data.csv` 的 CSV 文件中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值