小编mac*_*azo的帖子

如何使Python脚本作为服务运行?

我想在CENTOS服务器中运行python脚本:

#!/usr/bin/env python
import socket
try:    
    import thread 
except ImportError:
    import _thread as thread #Py3K changed it.
class Polserv(object):
    def __init__(self):
        self.numthreads = 0
        self.tidcount   = 0
        self.port       = 843
        self.sock       = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        self.sock.bind(('100.100.100.100', self.port))
        self.sock.listen(5)
    def run(self):
        while True:
            thread.start_new_thread(self.handle, self.sock.accept()) 
    def handle(self,conn,addr):
        self.numthreads += 1
        self.tidcount   += 1
        tid=self.tidcount
        while True:
            data=conn.recv(2048)
            if not data:
                conn.close()
                self.numthreads-=1
                break
            #if "<policy-file-request/>\0" in data:
            conn.sendall(b"<?xml version='1.0'?><cross-domain-policy><allow-access-from domain='*' to-ports='*'/></cross-domain-policy>")
            conn.close()
            self.numthreads-=1
            break
        #conn.sendall(b"[#%d (%d running)] %s" % …
Run Code Online (Sandbox Code Playgroud)

python linux centos

47
推荐指数
4
解决办法
11万
查看次数

Python:如果在执行requests.get()时脚本停止会发生什么?

我知道它requests.get()提供了一个HTTP接口,以便程序员可以向HTTP服务器发出各种请求.

这告诉我某个端口必须打开,以便请求可以发生.

考虑到这一点,如果脚本被停止(例如,通过键盘中断,那么正在执行脚本的机器仍然连接到互联网),在请求被应答/完成之前会发生什么?

端口/连接是否仍然打开?

端口/连接是否自动关闭?

python http python-requests python-requests-html

15
推荐指数
1
解决办法
373
查看次数

从字典在同一图上创建多个箱线图

我正在尝试创建一个图形,其中 x 轴是字典的键,而箱线图来自字典中的信息。我的字典可以有很多键。

Data = {'ABC': [34.54, 34.345, 34.761], 'DEF': [34.541, 34.748, 34.482]}

for ID in Data:      
        plt.boxplot(Data[ID])
        plt.xlabel(ID)
plt.savefig('BoxPlot.png')
plt.clf()
Run Code Online (Sandbox Code Playgroud)

然而,它似乎将箱线图放在一起。我尝试在没有运气的情况下迭代 boxplot 中的位置值。如果可能,我还想将键用作每个箱线图的 xaxis 值。

python matplotlib boxplot

15
推荐指数
1
解决办法
2万
查看次数

a,b = b,在C++中的python vs std :: swap()中

我知道这a,b = b,a基本上是为一个元组赋予(a,b)另一个元组的值(b,a).这本质上是交换价值的形式abba.因此,导致"交换".

这是swap()C++中函数的功能.

从研究中,我看到C++的swap()函数使用第三个临时变量来执行交换.我一直无法找到如何a,b = b,a在python中实现.

如何a,b = b,a实施?

python是否也使用第三个临时变量?如果没有,它是如何工作的?

两种操作如何在速度方面进行比较?我猜测如果python也使用第三个变量,执行时间的差异将归因于python的解释.

编辑:所有答案都很棒,但社区似乎认为Sapan是最好的.还要感谢a_guest,虽然没有发表回答,但他们在评论中给了我们很多信息.另外:每个人似乎都认为swap()只是因为它的C++而更快.我不一定同意这一点.如果以冻结二进制文件运行,Python可以非常快.

c++ python

10
推荐指数
3
解决办法
555
查看次数

TCP 服务器与 HTTP 服务器

我正在编写一个简单的 python3 网络服务器。我尝试过各种教程,并且效果都很好。尽管如此,还是有一个我不明白的区别。

在一篇教程中,他们使用 HTTPServer,如下所示:

server = HTTPServer(('', PORT_NUMBER), myHandler) 
server.serve_forever()
Run Code Online (Sandbox Code Playgroud)

在另一个教程中,他们使用 socketserver.TCPServer ,如下所示:

with socketserver.TCPServer(('', PORT_NUMBER), myHandler) as httpd:
    httpd.serve_forever()
Run Code Online (Sandbox Code Playgroud)

两种方法有什么区别?我所需要的只是一个简单的网络服务器,它能够通过 POST 接收 JSON 文件并使用另一个 JSON 进行询问。在这两种情况下,我都会使用相同的处理程序:

class myHandler(BaseHTTPRequestHandler):
    def _set_headers(self):
        self.send_response(200)
        self.send_header('Content-type', 'application/json')
        self.end_headers()

    def do_GET(self):
        self._set_headers()
        self.wfile.write("{dummy:'dummy'}")

    def do_POST(self):
        # Doesn't do anything with posted data for this example
        self._set_headers()
        self.wfile.write("{dummy:'dummy'}")
Run Code Online (Sandbox Code Playgroud)

其中一种方法更适合我的需求吗?有没有更好的方法来编写这个服务器来满足我的需要?

感谢您的帮助和时间!

python httpserver tcpserver

5
推荐指数
1
解决办法
2009
查看次数

Python解包运算符(*)

我正在研究python codegolf,看到有人以一种奇怪的方式使用拆包运算符:

*s,='abcde'
Run Code Online (Sandbox Code Playgroud)

我知道解包运算符基本上是对一个序列进行迭代。所以我知道

s=[*'abcde']
Run Code Online (Sandbox Code Playgroud)

将“解压” abcde字符串并保存['a', 'b', 'c', 'd', 'e']在variable中s

有人可以尽可能详尽地解释

*s,='abcde'
Run Code Online (Sandbox Code Playgroud)

声明工作?我知道它的作用与之相同,s=[*'abcde']但它以不同的方式实现。为什么将解包迭代器放在变量而不是字符串上?为什么在变量名后面有一个逗号?

python operators python-3.x

3
推荐指数
1
解决办法
1107
查看次数

如何解决端口 22 连接超时

ssh: connect to host bitbucket.org port 22: Connection timed out
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Run Code Online (Sandbox Code Playgroud)

我的防火墙被禁用,我仍然连接超时。我该怎么办?

git ssh bitbucket

3
推荐指数
1
解决办法
1万
查看次数

Python,Docker-'ascii'编解码器无法编码字符

我编写了一个python3脚本,该脚本进行了一些Web抓取并将一些信息存储在CSV文件中。该脚本可以在我的计算机上正常运行。当我尝试在Docker容器上运行脚本时会发生问题。该错误似乎在我的代码的这一部分上(出于本问题的目的而进一步简化)。

# default CSV module
import csv

# this is how an ACTUAL row looks like in my program, included it in case it was important
row = {'title': 'Electrochemical sensor for the determination of dopamine in presence of high concentration of ascorbic acid using a Fullerene-C60 coated gold electrode', 'url': 'https://onlinelibrary.wiley.com/doi/abs/10.1002/elan.200704073', 'author': 'Goyal, Rajendra Nath and Gupta, Vinod Kumar and Bachheti, Neeta and Sharma, Ram Avatar', 'abstract': 'A fullerene?C60?modified gold electrode is employed for the determination of …
Run Code Online (Sandbox Code Playgroud)

python csv python-3.x docker

2
推荐指数
1
解决办法
1876
查看次数

在python构造函数中缺少1个必需的位置参数

我正在尝试学习python中的继承概念。我有一个雇员班级和派生班级主管。

class Employee:
    'Class defined for employee'

    def __init__(self, name, dept, salary):
        self.name = name
        self.dept = dept
        self.salary = salary
Run Code Online (Sandbox Code Playgroud)

子类

class Executive(Employee):

    def __init__(self, name, dept, salary, hascar):
        Employee.__init__(name, dept, salary)
        self.hascar = hascar
Run Code Online (Sandbox Code Playgroud)

具有car是传递给构造函数的布尔值,但是这会给我一个错误:

init Employee中的文件“ I:\ Python_practicals \ com \ python \ oop \ Executive.py”,第7行 。初始化(名称,部门,薪金)TypeError:初始化()缺少1个必需的位置参数:'salary'

当我尝试实例化Executive对象时。
emp4 = Executive("Nirmal", "Accounting", 150000, True)

python

1
推荐指数
1
解决办法
5188
查看次数

如何在一行中打印列表元素?

我需要打印排序的整数列表,但它应该在一行中,没有列表方括号,最后没有任何'\n'...

import random
n = int(input(""))
l=[]
for i in range(n):
    x = int(input())
    l.append(x)
not_sorted = True
while not_sorted:    
    x = random.randint(0,n-1)
    y = random.randint(0,n-1)
    while x==y:
        y = random.randint(0,n-1)
    if x>y:
        if l[x]<l[y]:
            (l[x],l[y])=(l[y],l[x])
    if x<y:
        if l[x]>l[y]:
            (l[x],l[y])=(l[y],l[x])
    for i in range(0,n-1):
        if l[i]>l[i+1]:
            break
    else:
       not_sorted = False
for i in range(n):
    print(l[i])
Run Code Online (Sandbox Code Playgroud)

输出应该像这样::: 1 2 3 4 5而不是这样:::: [1,2,3,4,5]

python

-2
推荐指数
1
解决办法
2289
查看次数