当前位置: 首页 > news >正文

如何检查网站是否被挂木马家电照明电子通用网站模板

如何检查网站是否被挂木马,家电照明电子通用网站模板,可以自己做视频网站吗,在那个网站做定制旅游0. Abstract 官方文档很罗嗦#xff0c;长篇大论例子少。本文将举例说明 csv 包的用法#xff0c;然后补充一些必要的说明。 1.0 CSV 文件 CSV(Comma-Separated Values,逗号分隔值)文件是一种常见的以纯文本形式存储数据的文件格式。它使用逗号作为字段之间的分隔符#…0. Abstract 官方文档很罗嗦长篇大论例子少。本文将举例说明 csv 包的用法然后补充一些必要的说明。 1.0 CSV 文件 CSV(Comma-Separated Values,逗号分隔值)文件是一种常见的以纯文本形式存储数据的文件格式。它使用逗号作为字段之间的分隔符并且每一行表示一个记录。 以下是一个简单的示例展示了一个包含姓名、年龄和城市信息的 CSV 文件 Name, Age, City John, 25, New York Alice, 30, Los Angeles Bob, 35, Chicago在上述示例中第一行是标题行包含了三个字段(field)的名称Name、Age 和 City。接下来的每一行都是一个记录每个字段之间由逗号进行分隔。 在 Python 中可以使用内置的 csv 模块来读取和写入 CSV 文件。该模块提供了方便的函数和方法来处理 CSV 数据例如 csv.reader() 用于读取 CSV 文件csv.writer() 用于写入 CSV 文件以及其他用于设置分隔符、引号字符等的选项。 1.1 读文件 reader(iterable, dialectexcel, *args, **kwargs) 这个函数标签是 PyCharm 生成的伪标签实际的代码在底层不是 python 语言故无法查看。读 import csvwith open(demo.py, r) as csvfile: # 记刚才生成的 csv 文件名为 demo.pysamples csv.reader(csvfile)for sample in samples:print(sample)### output ### [Name, Age, City] [John, 25, New York] [Alice, 30, Los Angeles] [Bob, 35, Chicago]参数 iterable 按照 reader(iterable, dialectexcel, *args, **kwargs)它是可以接收任何 iterable 对象的我试了一下确实可以 for row in csv.reader(abc, delimiter,):print(row)### output ### [a] [b] [c] # 如果 (abc, def), 则 [abc] [def]但是这个迭代器要返回 str 才行如果 csv.reader((1, 2))则出现错误 _csv.Error: iterator should return strings, not int (did you open the file in text mode?)由此看来csv.reader 是需要 iterable 返回 str然后再对 str 根据 delimiter 进行分割 for row in csv.reader((a,bc, def), delimiterb):print(row) ### output ### [a,, c] [def]果然把 ‘a,bc’ 中的 ‘b’ 当分隔符了。还发现每行的分割数量可以不一致。 小结reader(iterable, dialectexcel, *args, **kwargs) 接收一个字符串迭代器返回一个字符串列表迭代器迭代过程中根据 delimiter 把字符串分割成字符串列表。如 csv.reader(abc, delimiter,)迭代 a, b, c 三个字符串每个字符串根据 , 分割形成列表 [a], [b], [c]。 重温 open() 那么 open(demo.py, r) 是一个 str 迭代器咯是的 open 返回的对象是 TextIOWrapper它在 io 包中类结构如上图所示它是个迭代器。 之前只知道常见的文件读取函数 f.read() # 读取全部文本返回一个字符串。这种方法适用于一次性处理小的文件。 f.readline() # 按行读取文件每次返回一个字符串。 f.readlines() # 读取全部文本返回一个字符串列表。不知道 f 本身是什么既然现在知道它是迭代器那看一看 for ... in ... 会发生什么 with open(demo.csv, r) as f:for item in f:print(item)### output ### Name, Age, CityJohn, 25, New YorkAlice, 30, Los AngelesBob, 35, Chicago每个迭代元素是文件中文本的一行并带有 \n 换行符这和 f.readlines() 是一样的只不过后者是一次性读取所有行前者是边读边迭代。不止如此既然能 with那么它肯定也是上下文管理器。这个迭代器是可关闭的。 回到 csv.reader(csvfile)看一看文件迭代器关闭后继续迭代 csv.reader(csvfile) 会怎样 with open(demo.py, r) as csvfile:samples csv.reader(csvfile) for sample in samples: # csv 文件已关闭print(sample)# ValueError: I/O operation on closed file.报了 ValueError: I/O operation on closed file. 错这和读写已关闭的文件是一样的。也就是说csv.reader(csvfile) 并不是一次性读取文件返回给 samples 对象它只是包装了 csvfile实际的读写操作还是由 csvfile 对象完成的。但很遗憾只能到这samples csv.reader(csvfile) 返回的 _reader 类型到底是怎样的无法得知。 小结reader(csvfile) 包装一个文件对象 csvfile (是个字符串迭代器)每次迭代一行根据 delimiter 把这行字符串分割成字符串列表过程中 csvfile 不能关闭。 再读文档就明白了 The “iterable” argument can be any object that returns a line of input for each iteration, such as a file object or a list. The optional “dialect” parameter is discussed below. The function also accepts optional keyword arguments which override settings provided by the dialect. The returned object is an iterator. Each iteration returns a row of the CSV file (which can span multiple input lines). 1.2 参数配置 从 reader(iterable, dialectexcel, *args, **kwargs) 和 csv.reader(abc, delimiter,) 来看参数可以通过类似 delimiter, 的键值对进行配置但不知道都有哪些参数可配置。注意到 dialectexcel在文档中有这么一段话 The function also accepts optional keyword arguments which override settings provided by the dialect. 也即 dialectexcel 提供了参数设置。继续看文档怎么写(翻译) 1.2.1 Dialect Registration: Readers 和 Writers 都支持 dialect 参数该参数是对一组 setting 的方便 handle。当 dialect 参数是字符串时它标识模块中预先注册的一种 dialect。如果它是一个类或实例则参数的属性用作读取器或写入器的设置 class excel(Dialect):delimiter ,quotechar escapechar Nonedoublequote Trueskipinitialspace Falselineterminator \r\nquoting QUOTE_MINIMALSETTINGS 意义 quotechar - 指定一个字符作为 quoting character (引号符)delimiter - 指定一个字符作为字段 separator (分隔符) skipinitialspace - 如何解释 whitespace which immediately follows a delimiter如果为 False则把分隔符后的空格当作字段值的一部分lineterminator - 结束一行的字符序列应该是 \n 之类的quoting - 控制 writer 函数给字段值加引号的规则可以是以下 module constants ~~~~      – csv.QUOTE_MINIMAL 0 – 必要时才加引号例如当字段值包含引号或分隔符时 ~~~~      – csv.QUOTE_ALL 1 – “always” 加引号 ~~~~      – csv.QUOTE_NONNUMERIC 2 – 非数字的字段值加引号 ~~~~      – csv.QUOTE_NONE 3 – never 加引号escapechar - 指定在引号设置为 QUOTE_NONE 时用于转义分隔符的字符doublequote - 处理字段内部的引号如果为 True读文件时两个连续的引号解释为一个写入时每个引号写成两个。 还有两个定义好的 Dialect 类 class excel_tab(excel):Describe the usual properties of Excel-generated TAB-delimited files.delimiter \t register_dialect(excel-tab, excel_tab)class unix_dialect(Dialect):Describe the usual properties of Unix-generated CSV files.delimiter ,quotechar doublequote Trueskipinitialspace Falselineterminator \nquoting QUOTE_ALL register_dialect(unix, unix_dialect)如果想自己定义 Dialect只需要模仿着继承 class Dialect 就行。然后就是注册。 注册 register_dialect(unix, unix_dialect) def register_dialect(name, dialectNone, **fmtparamsNone): # real signature unknown; restored from __doc__Create a mapping from a string name to a dialect class.dialect csv.register_dialect(name[, dialect[, **fmtparams]])pass注册 Dialect就是给定义的 Dialect 关联一个字符串名字以便以类似 dialectexcel 的方式设置参数当然直接给类或实例也是可以的。 Dialect 类中的参数可以直接以 **kwargs 键值对的方式送到 csv.reader() 函数中。 与 Dialect 相关的几个函数 这些都是 PyCharm 根据文档生成的函数伪标签 def get_dialect(name): # real signature unknown; restored from __doc__Return the dialect instance associated with name.dialect csv.get_dialect(name)打印出来得到类似 _csv.Dialect object at 0x000002606C5EC990 的东西passdef list_dialects(): # real signature unknown; restored from __doc__Return a list of all know dialect names.names csv.list_dialects()已注册的 Dialect 列表吧passdef register_dialect(name, dialectNone, **fmtparamsNone): # real signature unknown; restored from __doc__Create a mapping from a string name to a dialect class.dialect csv.register_dialect(name[, dialect[, **fmtparams]])passdef unregister_dialect(name): # real signature unknown; restored from __doc__Delete the name/dialect mapping associated with a string name.csv.unregister_dialect(name)pass试验 class B(csv.excel):delimiter b # 设置字符 b 为分隔符csv.register_dialect(b, B) # 注册名为 b print(csv.list_dialects())### output ### [excel, excel-tab, unix, b] # 多了一个 b2. 几个函数 def field_size_limit(limitNone): # real signature unknown; restored from __doc__Sets an upper limit on parsed fields. csv.field_size_limit([limit])Returns old limit. If limit is not given, no new limit is set andthe old limit is returnedpass设置了字段的最大长度如果超过 limit则报错 _csv.Error: field larger than field limit (limit值)1.3 写 csv 文件 def writer(fileobj, dialectexcel, *args, **kwargs): # real signature unknown; NOTE: unreliably restored from __doc__ csv_writer csv.writer(fileobj [, dialectexcel] [optional keyword args])for row in sequence:csv_writer.writerow(row)[or]csv_writer csv.writer(fileobj [, dialectexcel] [optional keyword args])csv_writer.writerows(rows)The fileobj argument can be any object that supports the file API.pass试一试 sequence [[A, 18, Zhoukou],[B, 19, Nanjing] ] with open(./demo.csv, w) as csvfile:csv_writer csv.writer(csvfile, quotingcsv.QUOTE_NONNUMERIC)for row in sequence:csv_writer.writerow(row)csv_writer.writerows(sequence)发现文件内容变成了 A,18,ZhoukouB,19,NanjingA,18,ZhoukouB,19,Nanjing即是覆盖写入的如果把 open(./demo.csv, w) 中的 w 改成 a就可以追加写入了。再一次证实了 csv.reader(...) 和 csv.writer(...) 只是包装了文件读写对象。
http://www.zqtcl.cn/news/316012/

相关文章:

  • 仁怀哪儿做网站泰安市建设局
  • 做网站和编程有关系吗手机怎么做电子书下载网站
  • 网站做关键词排名网站快速排名的方法
  • 有网站模板如何预览泉州app开发
  • 网站自助建站系统重庆皇华建设集团有限公司网站
  • 云速成美站做网站好吗汕头制作网站
  • 搜狗搜索网站提交入口在哪里做卖车网站
  • 河南省百城建设提质网站新人怎么做电商
  • 建设机械网站制作创建个人网站教案
  • 无锡网站推广装修风格大全2023新款
  • 在线设计logo免费网站如何在网站上添加qq
  • 高端网站建设哪里好网站建设与管理案例教程
  • 云南专业网站建设上海百度移动关键词排名优化
  • 如何搭建一个完整的网站wordpress 小程序开发
  • 外贸网站建设关键点为网站网站做代理被判缓刑
  • 网站免费正能量小说台州百度关键词优化
  • 保定自助建站做静态网站
  • 旅游网站对比模板免费招收手游代理
  • phpstudy网站建设教程wordpress破解管理员帐号
  • 商务网站规划与建设心得北京小程序制作首选华网天下
  • 果洛电子商务网站建设多少钱公司网站建设选什么服务器
  • 莱芜做网站公司网站建设表单教案
  • 建设酒类产品网站的好处遵义网站制作费用
  • 高端网站设计价格wordpress登录下载附件
  • 国内有名的网站设计公司wordpress缓存插件比拼
  • 网站的建设和推广直播营销策划方案范文
  • 做购物平台网站 民治百度导航地图下载
  • 东莞市主营网站建设服务机构青岛建站公司电话
  • 做网站技术wordpress漂亮手机网站模板下载
  • 网站怎么更新网页内容网络推广怎么找客户