read

day09

≡放荡痞女 提交于 2019-11-30 00:51:14
基本的文件操作 什么是文件 文件是操作系统为用户或应用程序提供的一个读写硬盘的虚拟单位 如何使用文件 # open(文件路径) # f = open(文件路径) # print(f) # 可以在文件路径前加r,防止字符转义 read模式打开文件 # f = open(文件路径, mode = 'r') # data = f.read() # print(data) ''' 读取文件内容,向操作系统发起读请求,会被操作系统转成具体的硬盘操作,将内容有由硬盘读入内存 ''' write模式打开文件 # f = open(文件路径, ’w') # f.write(str) 打开文件三步骤 1、打开文件 2、读写 3、关闭文件 绝对路径 Windows系统绝对路径从盘符(C:、D:)开始写一个完整的路径 相对路径 相对于当前执行文件所在的文件夹 推荐使用相对路径 文件三种打开模式 文件操作的三种基础模式 r模式为read(默认) w模式为write a模式为append 文件读写内容 t模式为text(默认) b模式为bytes(二进制文件) r模式 只读模式,只能读不能写,文件不存在时报错 f = open('file.txt', mode='rt', encoding='utf8') data = f.read() print(data) ''' f.read(

Clob,Blob,InputStream,byte 互转

大兔子大兔子 提交于 2019-11-29 21:48:20
今天用java读取oracle里的Clob字段。本来要转成xml文件的,一顿转换。现在总结一下这个流的互相转换方法。 以下内容来自: http://hi.baidu.com/webidea/item/8965fd99de1034dd1e4271e1 一、byte[]=>Blob 我们可以通过Hibernate提供的表态方法来实现如: org.hibernate.Hibernate.Hibernate.createBlob(new byte[1024]); 二、Blob=>byte[] /** * 把Blob类型转换为byte数组类型 * @param blob * @return */ private byte[] blobToBytes(Blob blob) { BufferedInputStream is = null; try { is = new BufferedInputStream(blob.getBinaryStream()); byte[] bytes = new byte[(int) blob.length()]; int len = bytes.length; int offset = 0; int read = 0; while (offset < len && (read = is.read(bytes, offset, len offset)) >= 0)

C#读写三菱PLC和西门子PLC数据 使用TCP/IP 协议

雨燕双飞 提交于 2019-11-29 19:26:13
本文将使用一个Github开源的组件库技术来读写三菱PLC和西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作 github地址: https://github.com/dathlin/HslCommunication 如果喜欢可以star或是fork,还可以打赏支持,打赏请认准源代码项目。 在Visual Studio 中的NuGet管理器中可以下载安装,也可以直接在NuGet控制台输入下面的指令安装: Install-Package HslCommunication 如果需要教程:Nuget安装教程: http://www.cnblogs.com/dathlin/p/7705014.html 联系作者及加群方式(激活码在群里发放): http://www.hslcommunication.cn/Cooperation 组件的完整信息和API介绍参照: http://www.cnblogs.com/dathlin/p/7703805.html 组件的使用限制,更新日志,都在该页面里面。 如果你需要在读取PLC数据之后,还要群发客户端来实现远程办公室同步监视,可以参考如下的项目(基于该组件扩展起来的,带有账户验证,版本控制,数据群发,公告管理等等功能) https://github

Python 20 模块

本秂侑毒 提交于 2019-11-29 17:21:25
# 首先载入模块:# 先是内置模块# 再是扩展的 如:django# 后是自定义的# 模块就是一个文件# import demo# def read():# print('my read func')# demo.read()# print(demo.money)# 先从sys.modules里查看是否已经被导入# 如果没有被导入,就依据sys.path路径去寻找模块# 找到了就导入# 创建这个模块的命名空间# 执行文件,把文件中的名字都放到命名空间里# import sys# print(sys.modules.keys())# print(sys.path)# 可以定义别名# 有别名了就只能用别名,本身的变量名不能用了# import time as t# print(t.time())# 别名例子# 有两个数据库软件# oracle# mysql# if 数据库 == 'oracle':# import oracle as db# elif 数据库 == 'mysql'# import mysql as db# 连接数据库 db.connect# 登录认证# 增删改查# 关闭数据库# 可以写在一行,但可读性差,不建议这样用# import time,sys,os# import demo# from demo import 变量名# from demo import

Netty5 Read事件处理过程_源码讲解

≡放荡痞女 提交于 2019-11-29 15:29:23
欢迎大家关注我的微博 http://weibo.com/hotbain 会将发布的开源项目技术贴通过微博通知大家,希望大家能够互勉共进!谢谢!也很希望能够得到大家对我博文的反馈,写出更高质量的文章!! Netty是对Nio的一个封装,关于网络的所有操作都是通过事件的方式完成的。例如连接创建、read事件、write事件都是通过Nio来完成 的。那netty是怎么启动监听的呢? 在什么地方启动的呢?此处不为大家设置悬念,一次性告诉大家。通过循环扫描的方式来实现监听的。具体的方法类位于NioEventLoop的run方法中 (赶紧进去看看吧!! 浅显易懂)。 下面是netty的acceptor线程创建连接的代码。位于类NioEventLoop的processSelectedKey中(至于 processSelectedKey是怎么被调用的,自己看看调用链就行了(eclipse用ctrl+Shift+H就可以查看到选中方法的调用 链))。 private static void processSelectedKey(SelectionKey k, AbstractNioChannel ch) { final NioUnsafe unsafe = ch.unsafe(); if (!k.isValid()) { // close the channel if the key is not

python入门(六)二次编码与文件操作

人走茶凉 提交于 2019-11-29 06:51:43
二次编码 密码本: ascii -- 没有中文 英文1字节 gbk -- 英文 8b(位) 1B(字节) 中文 16b 2B unicode -- 英文32b 4B 中文32b 4B utf-8 -- 英文8b 1B 欧洲16b 2B 亚洲24b 3B name="你好" s1=name.encode("utf-8")#编码 s2=name.encode("gbk")#编码 s2=s1.decode("utf-8")#用什么编码 就用什么解码 3.14 文件操作 读、覆盖写、追加(r、w、a) 读操作(r): f=open("哈哈",mode="r",encoding="utf-8")#open是打开:引号下填写文件路径 我这里用的是相对路径,逗号隔开,然后写操作方式 r 是读的意思, 然后写编码方式,我这里写"utf-8" print(f.read())#读取全部,选择read() print(f.readline())#读取一行,选择readline() print(f.readlines())#一行一行读取,存放在列表中 f.close()#文件操作完成,然后进行关闭 解决大文件: for i in f: print(i)#本质上是一行行的读取 注意:文件读取在哪,光标就显示在哪 f 可写成任意变量等,它被称作:文件句柄,文件操作符,或者文件操作对象等。 open

Scanner 与 Readable 的read()方法的关系

假如想象 提交于 2019-11-29 06:38:19
Scanner 与 Readable 的read()方法的关系 Readable接口中的read()方法实现了将字符串读入charBuffer中,但是只有在需要输出的时候才会调用。 Scanner是文本扫描器类,利用Scanner扫描并输出charBuffer中的内容的顺序:以hasNext()方法为例:第一次调用 hasNext(),由于此时charBuffer并无内容,等待输入,hasNext()方法阻塞,调用并执行read()方法,执行完read()方法,根据read方法的返回值来确定是否hasNext()的返回值是true或者false:若read()返回值不为-1,则认为hasNext() 为true,并且继续调用read()方法;若read()返回值为-1,则认为hasNext()为false,不再调用read()方法。 另外,在输出时是根据下一个空格标记(cb.append(" "))为准,未读到空格标记之前,无论调用多少次read()方法,都不会输出(缓存中的字符会一直累积),直到read()f方法返回-1或者读到空格标记,就会输出之前很多次通 过read()方法加到charBuffer的字符串。 public class RandomWords implements Readable { private static Random rand = new

【Java】文件打包

时间秒杀一切 提交于 2019-11-29 04:28:16
最近又接到了实验室的新任务,做文件的批量上传,批量下载。大致需要实现以下几项功能: 1.可以批量选择待上传的文件 2.可以上传大文件 3.能够让用户看到公有云盘的文件列表,私有云盘的文件列表 4.能够让用户以复选的形式批量下载文件,借鉴于各种流行的网盘批量下载文件时选择的解决方案:将用户选择的文件打包下载。 很开心的表示,我完成了所有的要求,其中不乏从白痴慢慢摸索,磕磕绊绊,但总归圆满。这次来讲讲java实现的文件打包,这次学习到的其它知识和经验,等有空再记下来,免得以后忘记了。 其实java是很面向对象的语言,强大到爆的工具类和API,以至于至今我还不能窥其一二。java.util.zip包中完整的提供了关于文件压缩和解压的工具类和方法,网上流行着各种apache的第三方工具库,异常强大,但我不喜欢引入第三方的工具,究其原因就是很难查到这些工具的引入方法,网上基本上都不讲,上来就是例子代码,各种import完事,看了以后一头雾水,主要是太菜了。所以就自己依靠官方提供的工具,自己慢慢的摸索。 首先,整理一下文件打包逻辑,然后,贴上源码 1.要获得需要打包的文件 //e.g: File file = new File("test.txt"); 2.生成最终打包的目标文件 //e.g: File zipFile = new File("DownLoad.zip");//最终打包的压缩包