前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python编程练习

python编程练习

作者头像
py3study
发布2020-01-19 15:14:45
4520
发布2020-01-19 15:14:45
举报
文章被收录于专栏:python3python3

1.创建一个文件,文件的第一行写入0,再创建20个任务线程,他们同时打开文件并将文件第一行读出来,加1写回去(将文件原有值覆盖掉)请保证20个任务线程完成后,文件中的第一行一定是20!

2.完成一个cs架构程序,服务端一旦接受到客户端请求文件路径后,判断此文件是否存在,如果存在,将文件内容发送给客户端,如果不存在,也请告知客户端.

```

编程1:

代码语言:javascript
复制
from threading import Thread, Lock
from time import sleep

lock = Lock()
#f1 = open('./a.txt', mode='w')
#f1.write('0')
def thrjob():
    try:
        lock.acquire()
        while True:
            f2 = open('./a.txt', mode='r+')
            rtext = f2.read(10)
            if rtext == '':
                # 读到文件结束标志EOF时,返回''
                break
            print(rtext, type(rtext))
            rtext2 = int(rtext)
            print(rtext2, type(rtext2))
            rtext2 = rtext2 + 1
            print(rtext2, type(rtext2))
            f3 = open('./a.txt', mode='w')
            rtext3 = str(rtext2)
            f3.write(rtext3)
    finally:
        lock.release()


if __name__ == '__main__':
    l = []
    for i in range(20):
        l.append(Thread(target=thrjob))
    for i in range(20):
        l[i].start()
    #for i in range(20):
        l[i].join()
    print('main will be gone')

编程2:

服务器端:

代码语言:javascript
复制
import socket
import os
sd = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)
sd.bind(('', 8889))
sd.listen(100)

while True:
    try:
        # 接听 newsd 数据交换
        newsd, raddr = sd.accept()
        print("data from ip:{}, port:{}".format(*raddr))

        # 收发消息
        s = newsd.recv(1024)
        s1 = s.decode()
        print(s1)
        print(os.path.exists(s1))
        if os.path.exists(s1):
            print('aaaa')
            f1 = open(s1, mode='r+', encoding='utf-8')
            while True:
                rtext = f1.read(10000)
                if rtext == '':
                    # 读到文件结束标志EOF时,返回''
                    break
                print(rtext)
                rtext1 = rtext.encode()
                newsd.send(rtext1)
        else:
            s = '未找到'
            s1 = s.encode()
            newsd.send(s1)

    except:
        sd.close()



客户端:
代码语言:javascript
复制
import socket

sd = socket.socket()
sd.connect(('192.168.152.1', 8889))
s = './a.txt'
s1 = s.encode()
sd.send(s1)
rtext1 = sd.recv(1024)
rtext = rtext1.decode()
print(rtext)


sd.close()


```

总的来说这几天学的知识用到了io操作,线程,和套接字(socket)和一丢丢的os,将这些东西联系起来,编程1用类去完成会更好些,好多代码框架还是看的老师的样本,尽量自己记下来

 下面评论为补充方法

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-03-14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档