内存中优雅的csv对象(Python)

磁盘*.csv文件是文本,以行结构的二维list是内存中的“csv”。


(笔记模板由python脚本于2024年12月18日 10:15:23创建,本篇笔记适合学习过list、panda的coder翻阅)


【学习的细节是欢悦的历程】

  • Python 官网:https://www.python.org/

  • Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
    地址:https://lqpybook.readthedocs.io/


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


  • My CSDN主页、My HOT博、My Python 学习个人备忘录
  • 好文力荐、 老齐教室
等风来,不如追风去……


磁盘中的*.csv是文本
优雅的csv对象
(行结构二维list是内存的csv)


本文质量分:

97 97 97

本文地址: https://blog.csdn.net/m0_57158496/article/details/144552911

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ 优雅的csv对象
    • 1、缘起
    • 2、csv的一般操作
    • 3、“专业”的无存储操作
      • 3.1 复杂操作
      • 3.2 “技术装逼”的调侃
    • 4、StringIO
    • 5、df.to_list方法
    • 6、to_list制造csv
    • 7、内存中的“csv”对象
    • 8、关于DataFrame和csv


◆ 优雅的csv对象


1、缘起


  • 截屏图片
    在这里插入图片描述

题目来源于 CSDN 问答社区提问“pandas的list追加问题”


  我对问答社区的这个问题的回答,让我捋顺了知识点,生发出了本笔记的分享主题:内存中的“csv”——优雅的数据结构。



回页目录


2、csv的一般操作


  可以使用pandas库将CSV文本内容读取到变量中。


以下是一个简单的示例,展示如何将 C S V CSV CSV文件的内容读取到pandas的DataFrame对象,然后将这个DataFrame对象赋值给一个变量:

import pandas as pd# 假设你有一个名为data.csv的文件
csv_file = 'data.csv'# 使用pandas的read_csv函数读取CSV文件
df = pd.read_csv(csv_file)# 现在,df变量包含了CSV文件的数据
print(df)

  在这个例子中,df 就是一个变量,它存储了 C S V CSV CSV文件的内容。你可以对这个变量进行各种操作,比如数据清洗、分析等。如果你想要将DataFrame的内容转换为一个 C S V CSV CSV格式的字符串并存储在变量中,可以使用to_csv方法,并将参数index设置为False来排除索引:


csv_string = df.to_csv(index=False)

这样,csv_string变量就包含了DataFrame的CSV文本内容。



回页目录


3、“专业”的无存储操作


3.1 复杂操作


  想要直接从pandas的DataFrame对象中获取CSV格式的字符串,而不是先写入磁盘再读取,你可以使用to_csv方法,并指定一个字符串IO对象作为输出。


以下是如何操作的示例:

import pandas as pd
from io import StringIO# 创建一个示例DataFrame
data = {'Column1': [1, 2, 3],'Column2': ['a', 'b', 'c']
}
df = pd.DataFrame(data)# 使用StringIO对象作为输出,将DataFrame转换为CSV格式的字符串
csv_buffer = StringIO()
df.to_csv(csv_buffer, index=False)
csv_str = csv_buffer.getvalue()# 关闭StringIO对象
csv_buffer.close()# 现在csv_str变量包含了DataFrame的CSV文本内容
print(csv_str)

  在这个例子中,csv_str变量包含了DataFrame的CSV文本内容,而无需将数据写入磁盘文件。这里使用了StringIO,它是一个在内存中读写str对象的类,类似于文件对象。这样,你就可以直接操作CSV格式的字符串,而无需实际写入文件系统。


  • 截屏图片
    在这里插入图片描述

  • 技术装逼实例

  使用 StringIO 对象配合 DataFrame.to_csv 方法确实是一个比较绕的方式,尤其是在您只想将 DataFrame 转换为 CSV 格式的字符串而不写入文件的情况下。通常,您可以直接使用 df.to_csv 方法并指定一个文件路径来保存 CSV 文件,或者如果您想要得到一个字符串,可以直接将输出重定向到一个字符串。


以下是几种直接将 DataFrame 转换为 CSV 字符串的方法,无需使用 StringIO:

方法1: 使用 io.StringIO,但更简洁

import pandas as pd
from io import StringIO# 创建一个示例DataFrame
data = {'Column1': [1, 2, 3],'Column2': ['a', 'b', 'c']
}
df = pd.DataFrame(data)# 使用StringIO对象直接获取CSV字符串
with StringIO() as csv_buffer:df.to_csv(csv_buffer, index=False)csv_str = csv_buffer.getvalue()# 现在csv_str变量包含了DataFrame的CSV文本内容
print(csv_str)

  这里使用了 with 语句来自动管理 StringIO 对象的生命周期,不需要显式地调用 close 方法。


**方法2:**使用 io.StringIO,一行代码

import pandas as pd
from io import StringIO# 创建一个示例DataFrame
data = {'Column1': [1, 2, 3],'Column2': ['a', 'b', 'c']
}
df = pd.DataFrame(data)# 一行代码获取CSV字符串
csv_str = pd.DataFrame(data).to_csv(index=False)# 打印CSV字符串
print(csv_str)

  在这个例子中,直接将 to_csv 方法的输出赋值给一个变量,因为不指定文件路径,它会返回一个字符串。


**方法3:**使用 sys.stdout 重定向

import pandas as pd
import sys# 创建一个示例DataFrame
data = {'Column1': [1, 2, 3],'Column2': ['a', 'b', 'c']
}
df = pd.DataFrame(data)# 保存原始stdout
original_stdout = sys.stdout# 重定向stdout到StringIO
sys.stdout = StringIO()
df.to_csv(index=False)
csv_str = sys.stdout.getvalue()# 恢复原始stdout
sys.stdout = original_stdout# 打印CSV字符串
print(csv_str)

  在这个例子中,通过重定向 sys.stdoutStringIO,可以捕获 to_csv 的输出。


  总的来说,使用 StringIO 和其他方法都有其适用场景。在某些情况下,可能需要将 DataFrame 的内容作为字符串处理,而不是直接写入文件,这时 StringIO 就非常有用。但如果你只是想要一个简单的字符串,直接使用 to_csv 方法返回字符串会更简洁。选择哪种方法取决于具体的需求和上下文。


3.2 “技术装逼”的调侃


  • 截屏图片
    在这里插入图片描述

  • 我:

    简单 => 繁复,纯纯的“技术装逼”。🤗🤗


  • ai学伴

      哈哈,确实有时候在技术社区或者工作中,人们可能会为了展示自己的技术能力而故意使用一些复杂的方法来完成简单的任务,这有时被戏称为“技术装逼”。不过,这种做法虽然可能在某种程度上展示了技术能力,但并不总是受到推崇,因为它可能会让代码变得难以理解和维护。

在实际开发中,以下是一些更为推荐的编程实践:

  1. 简洁性:尽量保持代码简洁明了,易于阅读和维护。
  2. 可读性:写代码时要考虑到其他开发者(或未来的你)是否能容易地理解。
  3. 性能:在确保代码简洁和可读的同时,也要考虑到代码的性能。
  4. 复用性:尽量编写可复用的代码,减少重复工作。
  5. 文档:提供清晰的文档和注释,帮助他人理解代码的目的和实现。

  记住,技术是为了解决问题而存在的,而不是为了制造问题。保持谦逊和实用主义的态度,往往能够更好地服务于项目和你所在的团队。👍🏻👍🏻



回页目录


4、StringIO


  StringIO,是把内存当磁盘,逻辑和工作原理都完全一致,意义何在,应为没有磁盘读写权限而设计?🧐🧐


  确实,使用StringIO或类似的内存文件对象,其底层逻辑与磁盘文件操作非常相似,但它的应用场景和优势主要体现在以下几个方面:

  1. 避免磁盘I/O:在某些情况下,应用程序可能没有权限写入磁盘,或者出于性能考虑,希望避免磁盘I/O操作。使用内存文件对象可以绕过这些限制。

  2. 方便性:在测试或开发过程中,使用内存文件对象可以更方便地处理数据,而不需要实际创建文件。这对于快速验证代码逻辑或进行单元测试非常有用。

  3. 数据传输:在分布式计算或网络通信中,可能需要将数据序列化为字符串格式进行传输。使用内存文件对象可以直接生成这种格式,而不需要临时文件。

  4. 安全性:如果数据敏感,不希望写入磁盘以防数据泄露,使用内存文件对象可以减少数据泄露的风险。

  5. 资源管理:在某些情况下,使用内存文件对象可以更高效地管理资源,因为不需要处理文件系统的打开、关闭、读写权限等复杂问题。


  所以,虽然从逻辑上讲,使用StringIO与写入磁盘文件类似,但它的实际应用场景和目的可以非常不同。如果你没有磁盘写权限,或者出于上述其他原因,使用内存文件对象是一个很好的解决方案。



回页目录


5、df.to_list方法


  • 我:

    df.tolist方法不更好用?🧐


  • ai学伴:

      确实,使用 df.tolist() 方法是获取 DataFrame 数据的一种更简洁的方式,然后你可以通过列表推导式来生成 CSV 格式的字符串。

以下是使用 df.to_list() 方法的示例:

import pandas as pd# 创建一个示例 DataFrame
df = pd.DataFrame({'Column1': [1, 2, 3],'Column2': ['a', 'b', 'c']
})# 使用 tolist() 和列表推导式生成 CSV 字符串
csv_str = '\n'.join([','.join(map(str, row)) for row in df.values.tolist()])# csv_str 现在包含了 DataFrame 的 CSV 文本内容
print(csv_str)

  在这个例子中,df.values.tolist() 将 DataFrame 的所有值转换为列表形式,然后通过列表推导式来生成每一行的 CSV 字符串,并用换行符连接这些行。

  这种方法简洁且有效,非常适合将 DataFrame 的数据转换为 CSV 格式的字符串。



回页目录


6、to_list制造csv


  • 我:

    再拼接上df.colunmls.tolist(),就是完整的pandas.DataFrame的csv文本形式,这不依赖任何形式的“文件写入”系统,直接手剥。爽爽歪歪。😎

  • ai学伴:

      完全正确!使用 df.columns.tolist()df.values.tolist() 可以非常直接地构建出完整的 CSV 文本,不需要依赖任何文件写入系统。


以下是完整的代码示例:

import pandas as pd# 创建一个示例 DataFrame
df = pd.DataFrame({'Column1': [1, 2, 3],'Column2': ['a', 'b', 'c']
})# 获取列名和值列表
columns = df.columns.tolist()
values = df.values.tolist()# 构建完整的 CSV 文本
csv_str = ','.join(columns) + '\n' + '\n'.join([','.join(map(str, row)) for row in values])# csv_str 现在包含了 DataFrame 的完整 CSV 文本内容
print(csv_str)

  这段代码首先将 DataFrame 的列名转换为列表,然后将 DataFrame 的值转换为列表。之后,它将这些列表转换成 CSV 格式的字符串,其中列名是第一行,之后是每一行的数据,每行数据由逗号分隔,行与行之间由换行符分隔。


  这种方法确实非常直接,而且非常符合 Python 的简洁和直观的风格。😎



回页目录


7、内存中的“csv”对象


  前面罗嗦的那一大堆,都是基于csv文本。在内存中以csv格式保存数据“文本”,不是真正要的文本,而是数据“个性使用”。

  所以“list式csv”,更为适宜。😎😎😎


  想要在内存中以 CSV 格式保存数据,并且以列表的形式来表示每一行,那么可以创建一个列表的列表(list of lists),其中每个内部列表代表 CSV 文件中的一行。


下面是如何实现这一点的代码:

import pandas as pd# 创建一个示例 DataFrame
df = pd.DataFrame({'Column1': [1, 2, 3],'Column2': ['a', 'b', 'c']
})# 将 DataFrame 转换为列表的列表形式
list_of_lists = [df.columns.tolist()] + df.values.tolist()# 现在list_of_lists包含了CSV格式的数据,可以直接在内存中使用
print(list_of_lists)

  在这段代码中,list_of_lists 是一个列表,其中第一个元素是列名列表,随后的元素是 DataFrame 的每一行数据。这种方式使得数据可以在不写入文件的情况下,以 CSV 格式在内存中使用,便于进行数据处理和分析。😎😎😎



回页目录


8、关于DataFrame和csv

(这是我之前的学习笔记)

  • DataFrame:
  1. pandas 数据类型之 DataFrame
    地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    浏览阅读:10,273
    点赞:7 收藏:40 
    (本篇笔记于2022-05-01 13:20:17首次发布,最后修改于2022-05-08 08:46:13)
  • csv
  1. 反斜杠,让您的csv文档字符不撞车;让“借”您csv数据的人叫苦不迭。
    地址:https://blog.csdn.net/m0_57158496/article/details/127779893
    浏览阅读:1,434
    点赞:9 收藏:8 评论:9
    (本篇笔记于2022-11-10 01:06:59首次发布,最后修改于2022-12-06 13:05:15)

  2. 学生五科成绩统计
    地址:https://blog.csdn.net/m0_57158496/article/details/134374753
    浏览阅读:465
    点赞:1 收藏:3 
    (本篇笔记于2023-11-13 12:57:22首次发布,最后修改于2023-11-14 21:46:34)

  3. 内存中优雅的csv对象(Python)
    地址:https://blog.csdn.net/m0_57158496/article/details/144552911
    浏览阅读:1
【这是我之前的学习笔记】



回页首


上一篇:  如果我说“稍稍改变录入习惯,Excel所有块公式将通通自适”,您信么?(Excel数据,一般以append增长数据,但insert操作也不会更繁琐)
下一篇: 



我的HOT博:

  本次共计收集404篇博文笔记信息,总阅读量61.76w。数据采集于2024年11月25日 08:23:38,用时7分56.4秒。阅读量不小于6.00k的有 9 9 9篇。

  1. 让QQ群昵称色变的神奇代码
    地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    浏览阅读:6.2w
    点赞:25 收藏:89 评论:17
    (本篇笔记于2022-01-18 19:15:08首次发布,最后修改于2022-01-20 07:56:47)

  2. Python列表(list)反序(降序)的7种实现方式
    地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    浏览阅读:1.3w
    点赞:9 收藏:40 评论:8
    (本篇笔记于2022-12-11 23:54:15首次发布,最后修改于2023-03-20 18:13:55)

  3. pandas 数据类型之 DataFrame
    地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    浏览阅读:1.0w
    点赞:7 收藏:40 
    (本篇笔记于2022-05-01 13:20:17首次发布,最后修改于2022-05-08 08:46:13)

  4. 个人信息提取(字符串)
    地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    浏览阅读:1.0w
    点赞:3 收藏:20 
    (本篇笔记于2022-04-18 11:07:12首次发布,最后修改于2022-04-20 13:17:54)

  5. 罗马数字转换器|罗马数字生成器
    地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    浏览阅读:8.2k
    收藏:3 
    (本篇笔记于2022-01-19 23:26:42首次发布,最后修改于2022-01-21 18:37:46)

  6. 统计字符串字符出现的次数
    地址:https://blog.csdn.net/m0_57158496/article/details/130517025
    浏览阅读:8.1k
    点赞:5 收藏:24 
    (本篇笔记于2023-05-06 22:28:18首次发布,最后修改于2023-05-12 06:21:40)

  7. Python字符串居中显示
    地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    浏览阅读:8.0k
    点赞:1 收藏:12 评论:1
  8. 回车符、换行符和回车换行符
    地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    浏览阅读:6.7k
    点赞:2 收藏:4 
    (本篇笔记于2022-02-24 13:10:02首次发布,最后修改于2022-02-25 20:07:40)

  9. python清屏
    地址:https://blog.csdn.net/m0_57158496/article/details/120762101
    浏览阅读:6.1k
    点赞:1 收藏:10 

推荐条件 阅读量突破6.00k
(更多热博,请点击蓝色文字跳转翻阅)

  • 截屏图片
    在这里插入图片描述
      (此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺“未过审”还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识“曾经”。2023-12-31)



回页首


老齐漫画头像

精品文章:

  • 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


◆ Python 入门指南【Python 3.6.3】


好文力荐:

  • 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  • 靠谱程序员的好习惯
  • 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归

CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告
  • Python代码编写规范
  • Python的docstring规范(说明文档的规范写法)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/491961.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenGL —— 2.6.1、绘制一个正方体并贴图渲染颜色(附源码,glfw+glad)

源码效果 C++源码 纹理图片 需下载stb_image.h这个解码图片的库,该库只有一个头文件。 具体代码: vertexShader.glsl #version

H5 中 van-popup 的使用以及题目的切换

H5 中 van-popup 的使用以及题目的切换 在移动端开发中,弹窗组件是一个常见的需求。vant 是一个轻量、可靠的移动端 Vue 组件库,其中的 van-popup 组件可以方便地实现弹窗效果。本文将介绍如何使用 van-popup 实现题目详情的弹窗展示,并实现…

Metaploit-永恒之蓝漏洞利用

1:Metaploit介绍   本次测试主要是利用永恒之蓝漏洞对windows7进行控制利用,掌握Metaploit工具的使用,知道永恒之蓝的漏洞利用原理。永恒之蓝是在Windows的SMB服务处理SMB v1请求时发生的漏洞,这个漏洞导致攻击者在目标系统上可…

FPGA高速下载器SZ901

SZ901基于AMD(Xilinx) Virtual Cable协议. 本设备使用千兆网络接口。基于此接口,本设备可以同时支持多达四路FPGA板卡同时调试,每组相互独立,互不干扰。 特点 1,支持JTAG 速度最高53Mb/s,电压范围1.2-3.3V,最高支持200cm排线 2,支持4路JTAG独立使用 3,支持多路…

【递归,搜索与回溯算法】穷举 vs 暴搜 vs 深搜 vs 回溯 vs 剪枝算法入门专题详解

前言 什么是回溯算法? 回溯算法是一种经典的递归算法,通常用于解决组合问题、排列问题和搜索问题等。 回溯算法的基本思想 从一个初始状态开始,按照一定的规则向前搜索,当搜索到某个状态无法前进时,回退…

设计模式之桥接模式:抽象与实现之间的分离艺术

~犬📰余~ “我欲贱而贵,愚而智,贫而富,可乎? 曰:其唯学乎” 桥接模式概述与角色组成 想象一下你家里的电视遥控器,无论是索尼还是三星的电视机,遥控器的按键功能都差不多&#xff1…

ASRPRO学习笔记一之语音模型位置和语音替换

一、语音替换的步骤 1、扬声器录音 打开GoldWave,点击工具栏中的蓝色控制属性按钮,点击设备,选择扬声器,点击ok。打开电脑上的网易云音乐,点击红色的录制按钮,开始录制音乐,在网易云音乐上点击播放音乐,录…

多因子认证 (Multi-factor authentication, MFA)

多因子认证 (MFA) 是一种思想,而UsernamePassword,OTP等是具体的认证手段。多因子认证就是将这些认证手段结合。 目录 什么是MFAMFA的作用MFA的实际应用 认证认证 (Authentication, AuthN) 因素常见的认证 (Authentication, AuthN) 类型密码认证无密码认…

内存压缩禁用设置

设置禁用内存压缩功能 1、“Win”“X”键→“A”键 2、如果输入“Get-MMAgent”并按“Enter”键,则可以从“MemoryCompression”中检查内存压缩功能的状态。 True启用,False禁用 3、要禁用内存压缩功能,请输入“Disable-MMAgent -mc”并…

素数回文数的个数

素数回文数的个数 C语言代码C 代码Java代码Python代码 💐The Begin💐点点关注,收藏不迷路💐 求11到n之间(包括n),既是素数又是回文数的整数有多少个。 输入 一个大于11小于1000的整数n。 输出…

QT网络(一):主机信息查询

网络简介 在QT中进行网络通信可以使用QT提供的Qt Network模块,该模块提供了用于编写TCP/IP网络应用程序的各种类,如用于TCP通信的QTcpSocket和 QTcpServer,用于 UDP 通信的 QUdpSocket,还有用于网络承载管理的类,以及…

Flutter Navigator2.0的原理和Web端实践

01 背景与动机 在Navigator 2.0推出之前,Flutter主要通过Navigator 1.0和其提供的 API(如push(), pop(), pushNamed()等)来管理页面路由。然而,Navigator 1.0存在一些局限性,如难以实现复杂的页面操作(如移…

如何在谷歌浏览器中开启安全浏览

在数字化时代,网络安全变得愈发重要。作为全球最受欢迎的网络浏览器之一,谷歌浏览器提供了多种功能来保护用户的在线安全。本文将详细介绍如何在谷歌浏览器中开启安全浏览,并额外提供一些有用的页面滚动设置、地址栏快捷搜索和跟踪防护的相关…

【物联网技术与应用】实验3:七彩LED灯闪烁

实验3 七彩LED灯闪烁 【实验介绍】 七彩LED灯上电后,7色动闪光LED模块可自动闪烁内置颜色。它可以用来制作相当吸引人的灯光效果。 【实验组件】 ● Arduino Uno主板* 1 ● USB数据线* 1 ● 7彩LED模块*1 ● 面包板*1 ● 9V方型电池*1 ● 跳线若干 【实验原…

直播美颜插件开发全流程:从美颜sdk的集成到实际部署

对于开发者来说,如何高效地开发和部署一个直播美颜插件,则需要从美颜SDK的集成到实际部署的全流程把控。本篇文章,我将详细解析这个流程中的关键技术和核心环节,助力开发者高效完成项目交付。 一、项目需求分析与技术选型 在开发…

【物联网技术与应用】实验4:继电器实验

实验4 继电器实验 【实验介绍】 继电器是一种用于响应施加的输入信号而在两个或多个点或设备之间提供连接的设备。换句话说,继电器提供了控制器和设备之间的隔离,因为设备可以在AC和DC上工作。但是,他们从微控制器接收信号,因此…

ESP32-S3外接SSD1306 OLED显示8*8字符和16*16汉字

一、接线图 二、实物 三、代码 #include <stdio.h> #include <string.h> #include "unity.h" #include "driver/i2c_master.h" #include "driver/gpio.h" #include "esp_lcd_panel_io.h" #include "esp_lcd_pane…

【Qt】QWidget中的常见属性及其功能(二)

目录 六、windowOpacity 例子&#xff1a; 七、cursor 例子&#xff1a; 八、font 九、toolTip 例子&#xff1a; 十、focusPolicy 例子&#xff1a; 十一、styleSheet 计算机中的颜色表示 例子&#xff1a; 六、windowOpacity opacity是不透明度的意思。 用于设…

Nginx Proxy Manager如何管理与配置反向代理服务并实现远程访问

文章目录 前言1. 一键安装2. 本地访问3. Linux 安装cpolar4. 配置公网访问地址5. 公网远程访问6. 固定公网地址 前言 Nginx Proxy Manager 是一个开源的反向代理工具&#xff0c;不需要了解太多 Nginx 或 Letsencrypt 的相关知识&#xff0c;即可快速将你的服务暴露到外部环境…

vscode中同时运行两个python文件(不用安装插件)

如何在vscode中同时运行两个python文件呢&#xff1f;今天在工作中遇到了这个问题。 查了网上的方法是安装coder runner插件&#xff0c;后来发现自身就有这个功能。所以记录一下,方便后续查找: 这是我的第一个文件&#xff0c;点击右上角的运行旁边的小箭头&#xff0c;有一…