2024-08-08



import socket
 
# 创建一个 socket 对象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 
# 定义服务器端的IP地址和端口号
host = '127.0.0.1'
port = 65432
 
# 绑定服务器端的IP地址和端口号
s.bind((host, port))
 
# 设置最大连接数,等待连接的客户端数量
s.listen(5)
 
print(f"服务器启动,监听地址:{host}:{port}")
 
while True:
    # 接受一个新的客户端连接
    sock, addr = s.accept()
    
    print(f"连接地址:{addr}")
    
    # 接收客户端发送的信息
    data = sock.recv(1024)
    if data:
        print(f"收到消息:{data.decode('utf-8')}")
        
        # 发送信息给客户端
        sock.sendall(b'Hello, Client!')
        
        # 关闭与客户端的连接
        sock.close()
 
# 关闭服务器端的socket
s.close()

这段代码展示了如何使用Python的socket库创建一个基本的TCP服务器。服务器监听本地地址的65432端口,接受客户端的连接,接收消息,处理消息(这里是打印到控制台),然后发送响应并关闭连接。

2024-08-08

format() 函数是 Python 中用于字符串格式化的一个强大工具。它可以使用占位符 { } 来代表将要被替换的内容,并通过多种方式进行格式化。

以下是一些使用 format() 函数的示例:

  1. 基本的格式化:



# 基本的格式化
print("Hello, {0}!".format("World"))  # 输出: Hello, World!
  1. 通过索引格式化:



# 通过索引格式化
print("{0} {1}!".format("Hello", "World"))  # 输出: Hello World!
  1. 通过关键字格式化:



# 通过关键字格式化
print("Name: {name}, Age: {age}".format(name="Alice", age=30))  # 输出: Name: Alice, Age: 30
  1. 通过字典格式化:



# 通过字典格式化
data = {'name': 'Bob', 'age': 25}
print("Name: {name}, Age: {age}".format(**data))  # 输出: Name: Bob, Age: 25
  1. 通过列表索引格式化:



# 通过列表索引格式化
print("{0[0]}, {0[1]}!".format(["Hello", "World"]))  # 输出: Hello, World!
  1. 格式化浮点数和字符串:



# 格式化浮点数和字符串
print("{:.2f} {}!".format(3.14159, "π"))  # 输出: 3.14 π!
  1. 复杂的格式化:



# 复杂的格式化
print("{name} is {age} years old and likes {hobbies}.".format(name="Charlie", age=35, hobbies="Python"))  # 输出: Charlie is 35 years old and likes Python.
  1. 格式化日期和时间:



# 格式化日期和时间
from datetime import datetime
now = datetime.now()
print("Today is {:%Y-%m-%d} and the time is {:%H:%M:%S}".format(now, now))  # 输出: Today is 2023-04-01 and the time is 14:55:57

以上示例展示了 format() 函数的基本和高级用法,涵盖了字符串、数字、列表、字典、浮点数、日期和时间等多种数据类型的格式化。

2024-08-08

boto3 是一个 Python 库,它使得 Python 开发者能够编写脚本来与 Amazon Web Services (AWS) 的服务进行交互。boto3 是 AWS SDK for Python 的一部分,它允许开发者访问 AWS 提供的大部分服务,例如 EC2, S3, DynamoDB, etc.

以下是一些使用 boto3 的常见方法:

  1. 创建一个 AWS 资源:



import boto3
 
# 创建一个 EC2 实例
ec2 = boto3.resource('ec2')
instance = ec2.create_instances(
    ImageId='ami-1234abcd',
    MinCount=1,
    MaxCount=1,
    InstanceType='t2.micro',
    KeyName='my-key-pair'
)
  1. 列出 AWS 资源:



import boto3
 
# 列出所有的 EC2 实例
ec2 = boto3.resource('ec2')
for instance in ec2.instances.all():
    print(instance.id, instance.state)
  1. 更新一个 AWS 资源:



import boto3
 
# 更新一个 EC2 实例的状态
ec2 = boto3.resource('ec2')
instance = ec2.Instance('i-1234abcd')
instance.modify_attribute(
    Attribute='instanceType',
    Value='t2.large'
)
  1. 删除一个 AWS 资源:



import boto3
 
# 删除一个 EC2 实例
ec2 = boto3.resource('ec2')
instance = ec2.Instance('i-1234abcd')
instance.terminate()
  1. 使用 AWS 服务的客户端:



import boto3
 
# 使用 S3 客户端列出所有的桶
s3 = boto3.client('s3')
response = s3.list_buckets()
for bucket in response['Buckets']:
    print(bucket['Name'])

以上代码片段展示了如何使用 boto3 与 AWS 资源进行交互。boto3 提供了丰富的 API 来操作各种 AWS 服务,使得开发者能够以编程方式管理和控制他们的 AWS 基础设施。

2024-08-08

由于大麦网(huoche.com)的抢票系统是为移动端优化的,并且涉及到自动化操作,可能会涉及到反爬虫策略和加密算法,因此直接用Python对其进行自动化操作可能会有较高的技术门槛。

如果你想要实现一个示例,可以考虑使用Selenium或者Pyppeteer这样的工具来模拟用户行为进行抢票。以下是一个基于Selenium的基础示例:




from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
 
# 设置Chrome的WebDriver
driver_path = 'path/to/your/chromedriver'
browser = webdriver.Chrome(executable_path=driver_path)
 
# 访问大麦网购票页面
url = 'https://huoche.com/buy_ticket.html'
browser.get(url)
 
# 等待页面加载完成
wait = WebDriverWait(browser, 10)
 
# 输入用户名和密码登录
login_field = wait.until(EC.presence_of_element_located((By.ID, 'username')))
login_field.send_keys('your_username')
password_field = browser.find_element_by_id('password')
password_field.send_keys('your_password')
login_button = browser.find_element_by_id('login_button')
login_button.click()
 
# 选择出发地和目的地
# 假设已经在页面上选择了出发地和目的地
 
# 选择乘车人
# 假设已经在页面上选择了乘车人
 
# 选择座位
# 假设已经在页面上选择了座位
 
# 点击提交订单
submit_button = wait.until(EC.element_to_be_clickable((By.ID, 'submit_order_button')))
submit_button.click()
 
# 确认订单
# 假设已经确认了订单,这一步是在模拟用户行为的基础上进行的
 
# 注意:以上代码只是一个示例,实际使用时需要根据大麦网的具体页面元素和登录机制进行相应的调整。

请注意,自动化抢票可能违反大麦网的使用协议,这里提供的代码只是一个演示如何使用Selenium进行基本的网页自动化的例子,不推荐用于非法目的。如果你打算进行抢票,请始终尊重网站规则,并确保你的行为符合法律法规。

2024-08-08



import redis
 
# 简单连接Redis
def simple_connect_redis():
    # 连接本地Redis实例
    client = redis.Redis(host='localhost', port=6379, db=0)
    # 设置键值对
    client.set('key', 'value')
    # 获取键对应的值
    value = client.get('key')
    print(value)
 
# 使用连接池连接Redis
def connection_pool_connect_redis():
    # 创建连接池
    pool = redis.ConnectionPool(host='localhost', port=6379, db=0)
    # 通过连接池创建Redis对象
    client = redis.Redis(connection_pool=pool)
    # 设置键值对
    client.set('key', 'value')
    # 获取键对应的值
    value = client.get('key')
    print(value)
 
# 存取数据示例
def data_example():
    # 连接本地Redis实例
    client = redis.Redis(host='localhost', port=6379, db=0)
    # 设置键值对
    client.set('name', 'John')
    client.set('age', 30)
    # 获取键对应的值
    name = client.get('name')
    age = client.get('age')
    print(f"Name: {name}, Age: {age}")
 
# 调用函数
simple_connect_redis()
connection_pool_connect_redis()
data_example()

这段代码展示了如何使用Python的redis模块进行Redis的简单连接和使用连接池的连接方法,并提供了一个存取数据的示例。在实际应用中,你可以根据需要选择合适的连接方式,并处理可能出现的异常。

2024-08-08

报错解释:

FileNotFoundError: [Errno 2] No such file or directory 错误表明Python无法在指定路径找到文件或目录。

解决方法:

  1. 检查指定的文件或目录路径是否正确。确保路径的拼写无误,包括所有的目录名称和文件名称。
  2. 确认文件或目录是否确实存在于指定的位置。如果文件或目录应该存在,确保它们没有被移动或删除。
  3. 检查程序是否有足够的权限访问指定的文件或目录。在Unix-like系统中,可能需要检查文件的权限(使用ls -l命令),在Windows系统中,检查文件是否被其他程序锁定。
  4. 如果程序是从不同的工作目录运行的,确保指定的路径是相对于当前工作目录的,或者是绝对路径。

示例代码:




import os
 
# 假设需要访问的文件名为'example.txt'
filename = 'example.txt'
 
# 确保文件存在
if not os.path.isfile(filename):
    print(f"文件 {filename} 不存在")
    # 处理文件不存在的情况,例如提示用户、创建文件等
else:
    # 文件存在,执行后续操作
    with open(filename, 'r') as file:
        content = file.read()
        print(content)

如果文件应该存在但程序仍然报错,可以使用os.path.exists()来检查路径是否存在,或者使用os.walk()来遍历目录查找文件。如果是编写脚本时硬编码的路径,考虑使用相对路径或动态获取当前工作目录来构建路径。

2024-08-08



# 导入Origin相关模块
import win32com.client
 
# 启动Origin
origin = win32com.client.Dispatch("Origin.Application")
 
# 打开一个新的项目
project = origin.NewProject()
 
# 添加一个外部Python脚本的操作
python_op = project.Operations.Add("!Python")
 
# 设置Python脚本的参数
python_op.Parameter = "C:\\path\\to\\your\\python\\script.py"
 
# 设置脚本的工作目录
python_op.WorkingDirectory = "C:\\path\\to\\your\\script\\directory"
 
# 设置输出文件的格式
python_op.OutputFileType = 1  # 1 表示 PDF,其他数值代表不同的文件格式
 
# 执行操作
python_op.Execute()
 
# 保存项目
project.SaveAs("C:\\path\\to\\your\\project\\file.opj")
 
# 关闭Origin
origin.Quit()

这段代码示例展示了如何使用Origin Python外部操作来批量执行Python脚本并将结果保存为PDF格式。需要注意的是,这里的路径应该根据实际情况进行替换。此外,python_op.Parameter需要根据实际Python脚本的需求进行相应设置。

2024-08-08

在Python项目中,requirements.txt 文件用于存储项目依赖的版本信息。这使得在其他环境中重新安装这些依赖变得很容易,只需要一条命令即可安装所有依赖。

生成 requirements.txt 文件的方法:

  1. 使用pip和freeze命令:



pip freeze > requirements.txt
  1. 使用pipreqs工具(推荐用于大型项目,它会分析代码中的import语句来收集依赖):



pip install pipreqs
pipreqs /path/to/project

使用 requirements.txt 文件安装依赖:




pip install -r requirements.txt

这样就会根据requirements.txt文件中列出的依赖关系自动安装相应的包。

2024-08-08



import os
import requests
 
# 设置文心一言的API密钥
API_KEY = os.getenv("WUHAN_YI_YE_API_KEY")
 
# 创建请求头
headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {API_KEY}"
}
 
# 设置API的URL
url = "https://openapi.baidu.com/oauth/2.0/token"
 
# 创建请求体
data = {
    "grant_type": "client_credentials",
    "client_id": "你的API Key",
    "client_secret": "你的Secret Key"
}
 
# 发送POST请求
response = requests.post(url, headers=headers, data=data)
 
# 输出响应结果
print(response.json())

请将上述代码中的 "你的API Key""你的Secret Key" 替换为你从文心一言官方获取的API密钥和秘钥。这段代码使用了requests库来发送一个POST请求到文心一言的授权API,以获取访问令牌。然后,它打印出响应结果。在实际应用中,你可能需要根据文心一言的API文档来调整请求的URL和请求体的内容。

2024-08-08



import requests
import json
 
# 设置API的URL
url = "https://qwmax.taobao.com/qwmax/api/query"
 
# 设置API所需的参数
params = {
    "app_id": "您的app_id",
    "session": "您的session",
    "query": "您想要询问的问题",
    "version": "v2"
}
 
# 发送POST请求
response = requests.post(url, params=params)
 
# 输出API的响应内容
print(response.json())

确保您已经获取了app_idsession,并且替换了"您想要询问的问题"

注意:由于API的使用可能涉及到授权和付费问题,请确保您已经了解了相关的服务条款,并且有权使用阿里云的通义千问API。