在将条目附加到文件中时,我遇到了一个奇怪的问题。
关于代码的一些背景知识,它是一组Python模块,
调用第二个模块在filesMaster服务器上创建/修改/删除某些对象。
在
+----+-----------+---------------+----------------+------------+----------+--------------------------------------+--------------------------------------------+
| | UE_NAME | UE_TYPE | ES_NAME | APN_NAME | STATUS | UE_ROUTES_OPERATION(MOBILE_ROUTER) | UE_ROUTES(MOBILE_ROUTER) |
+====+===========+===============+================+============+==========+======================================+============================================+
| 0 | ue_1 | MOBILE_ROUTER | Edge_service_4 | apn1862 | UE_ADDED | UE_ROUTE_ADDED | ['172.16.10.0/26(A)'] |
+----+-----------+---------------+----------------+------------+----------+--------------------------------------+--------------------------------------------+
| 1 | ue_6 | IOT_MOBILE | Edge_service_1 | apn_nuage | UE_ADDED | -- | -- |
+----+-----------+---------------+----------------+------------+----------+--------------------------------------+--------------------------------------------+
| 2 | ue_2 | MOBILE_ROUTER | Edge_service_4 | apn1862 | UE_ADDED | UE_ROUTE_ADDED | ['172.16.10.0/18(A)', '172.16.12.0/24(A)'] |
+----+-----------+---------------+----------------+------------+----------+--------------------------------------+--------------------------------------------+
| 3 | ue_201 | MOBILE_ROUTER | test1 | apn_nuage | UE_ADDED | UE_ROUTE_ADDED | ['172.16.10.0/16 (A)'] |
+----+-----------+---------------+----------------+------------+----------+--------------------------------------+--------------------------------------------+现在,面对问题,从代码的角度来看,一切都很好。但是,我看到了一个问题,更新被附加到Master_record文件。在最初执行此工具之后,在看到主记录CSV之后,
more .\master_records.csv
name,IMSI,MSISDN,ICCID,IMEI,Enterprise,operationalStatus,ueType,ueRoutes,description,apn_name
ue_1,1,1,1,1,Edge_service_4,IDLE,MOBILE_ROUTER,"172.16.10.0/26",UE-1-desc,apn1862
ue_6,6,6,6,6,Edge_service_1,CONNECTED,IOT_MOBILE,,UE-6,apn_nuage
ue_2,2,2,2,2,Edge_service_4,CONNECTED,MOBILE_ROUTER,"172.16.10.0/18,172.16.12.0/24",UE-2-desc,apn1862
ue_201,201,201,201,203,test1,IDLE,MOBILE_ROUTER,"172.16.10.0/16 ",UE-201,apn_nuage但是,在修改了一篇题为“ue_1”的"Latest_records.csv“的文章之后,双引号从ue_201的对象记录中消失了,在脚本完成后,master_records文件位于,
more .\master_records.csv
name,IMSI,MSISDN,ICCID,IMEI,Enterprise,operationalStatus,ueType,ueRoutes,description,apn_name
ue_6,6,6,6,6,Edge_service_1,CONNECTED,IOT_MOBILE,,UE-6,apn_nuage
ue_2,2,2,2,2,Edge_service_4,CONNECTED,MOBILE_ROUTER,"172.16.10.0/18,172.16.12.0/24",UE-2-desc,apn1862
ue_201,201,201,201,203,test1,IDLE,MOBILE_ROUTER,172.16.10.0/16 ,UE-201,apn_nuage
ue_1,1,1,1,1,Edge_service_4,CONNECTED,MOBILE_ROUTER,"172.16.10.0/26",UE-1-desc,apn1862您可以看到对象ue_201缺少172.16.10.0/16前后的双引号
这个问题仅在“”列下只有一个对象的情况下才能看到,如果我有"172.16.10.0/18,172.16.12.0/24“这样的多个对象,则不会看到这个问题。
更新主记录的代码非常简单,如下所示,
def add_entry_master_record(row_entry):
"""
Adds a UE Entry to Master Record file.
:param row_entry: UE record Entry.
:return: Updates the existing Master Record file.
"""
try:
with open(m_record, 'a+') as master_record_update:
master_record_update.write(row_entry)
master_record_update.write('\n')
except FileNotFoundError as err_file:
raise SystemExit(err_file)在检查“row_entry”的内容后,我没有看到Master_record文件对ue_201的任何更新,而只对ue_1进行了如下所示的更新,
row_entry = ue_1,1,1,1,1,Edge_service_4,CONNECTED,MOBILE_ROUTER,"172.16.10.0/26",UE-1-desc,apn1862一旦这种不规则性蔓延进来,它就开始干扰我的代码,因为latest_record和master_record文件之间的增量计算也处理掉了非增量内容。我能够解决这个问题,通过在比较之前使用一些正则替换,但我仍然好奇为什么这种不规律发生在第一位。
关于如何更新Master_record文件的说明:
修改现有对象之后,删除现有对象的old_record并添加新记录。
def drop_rows_master_record(ue_name, mod_entry):
"""
Drops the Entries from Master Record csv file.
:param ue_name: UE Name for which Entry needs to be dropped.
:param mod_entry: UE Record
:return: Drops the deleted/modified UE record from Master Records.
"""
df = pd.read_csv(m_record)
df_filtered = df[(df['name'].str.lower() == ue_name.lower()) &
(df['Enterprise'].str.lower() == mod_entry['Enterprise'].lower())]
df.drop(df_filtered.index, inplace=True)
df.reset_index(drop=True, inplace=True)
df.to_csv(m_record, index=False)让我知道,如果你们能分享一个指针,为什么这种差异正在悄悄出现,首先。
发布于 2022-06-21 02:38:35
我找到了这个问题的根源。这不是Pandas或Python的问题。* Pandas只是确认CSV格式,如果列中定义了一个元素,则删除引号。
因此,例如,如果CSV列只有一个值,如
ue_routes
10.18.19.0/24在文本文件中,我们将看到它没有引号。
但是,如果CSV列有多个值,
ue_routes
10.18.19.0/24, 10.18.20.0/24在文本文件中,我们将看到它的引号。
https://stackoverflow.com/questions/72554385
复制相似问题