jtwc 发表于 2024-1-7 21:19

下面py代码如何改?

本帖最后由 jtwc 于 2024-1-7 21:25 编辑

各位老师,如何把下面的代码改为:如果合约名字存在且现在日增仓的值大于文件中第1个和第2个 "|" 中间的值,则更新文件中第1个和第2个 "|" 中间的值。如果合约名字不存在,按照格式 "DCE.cs2403|1843.0|0" 将合约名字和日增仓的值和0追加写入文件。file_path = r"E:\T.txt"# 文件路径
      temp_file_path = r"E:\T_temp.txt"# 临时文件路径
      # 读取文件内容并存储到字典中
      data = {}
      with open(file_path, "r") as file:
            for line in file:
                contract, angle = line.strip().split("|")
                data = angle

      # 检查字典中是否已存在相同的合约名字,如果存在且现在日增仓的值大于文件中的值,则更新日增仓的值;如果不存在,则追加写入新的合约名字和日增仓
      if 合约名字 in data:
            if float(日增仓[合约名字]) > float(data[合约名字]):
                data[合约名字] = str(日增仓[合约名字])
                print("合约名字:", 合约名字)
                print("日增仓已更新为:", 日增仓[合约名字])
            else:
                print("合约名字:", 合约名字)
                print("日增仓未更新")
      else:
            data[合约名字] = str(日增仓[合约名字])
            print("合约名字:", 合约名字)
            print("日增仓已写入")

      # 将最终的字典内容写入临时文件
      with open(temp_file_path, "w") as file:
            for contract, angle in data.items():
                file.write(contract + "|" + angle + "\n")

      # 替换原始文件
      os.replace(temp_file_path, file_path)
      print("合约名字和日增仓已写入文件:", file_path)
      

jtwc 发表于 2024-1-7 21:28

各位老师,如何把下面的代码改为:如果合约名字存在且现在日增仓的值大于文件中第1个和第2个 "|" 中间的值,则更新文件中第1个和第2个 "|" 中间的值。如果合约名字不存在,按照格式 "DCE.cs2403|1843.0|0" 将合约名字和日增仓的值和0追加写入文件。

redballoon 发表于 2024-1-7 21:34

本帖最后由 redballoon 于 2024-1-7 21:37 编辑

你应该提供一个供测试的案例文件或demo,不然怎么知道你读的是什么样式或什么形式的内容,你这样问谁知道该怎么处理呢

jtwc 发表于 2024-1-7 21:39

redballoon 发表于 2024-1-7 21:34
你应该提供一个供测试的案例文件或demo,不然怎么知道你读的是什么样式或什么形式的内容,你这样问谁知道该 ...

上面源码写如为"DCE.cs2403|1843.0

wang20 发表于 2024-1-7 21:49

我帮你问了下ai工具
解析:

    首先,我们需要获取合约名字和日增仓的值。这可以通过函数参数或者用户输入来实现。
    然后,我们需要检查合约名字是否在字典中存在。如果存在,我们需要比较现在的日增仓值和文件中的值,如果现在的日增仓值大于文件中的值,我们就更新文件中的值。如果不存在,我们就将合约名字和日增仓的值追加写入文件。
    最后,我们将更新后的字典内容写入临时文件,然后替换原始文件。

代码如下:

      

      python
      复制代码
   
import os

def update_contract(file_path, temp_file_path, contract_name, increase_value):
    # 读取文件内容并存储到字典中
    data = {}
    with open(file_path, "r") as file:
      for line in file:
            contract, angle = line.strip().split("|")
            data = angle

    # 检查字典中是否已存在相同的合约名字,如果存在且现在日增仓的值大于文件中的值,则更新日增仓的值;如果不存在,则追加写入新的合约名字和日增仓的值
    if contract_name in data:
      if float(increase_value) > float(data):
            data = str(increase_value)
            print("合约名字:", contract_name)
            print("日增仓已更新为:", increase_value)
      else:
            print("合约名字:", contract_name)
            print("日增仓未更新")
    else:
      data = str(increase_value)
      print("合约名字:", contract_name)
      print("日增仓已写入")

    # 将最终的字典内容写入临时文件
    with open(temp_file_path, "w") as file:
      for contract, angle in data.items():
            file.write(contract + "|" + angle + "\n")

    # 替换原始文件
    os.replace(temp_file_path, file_path)
    print("合约名字和日增仓已写入文件:", file_path)

   

你可以通过调用这个函数来更新合约名字和日增仓的值,例如:

      

      python
      复制代码
   
update_contract(r"E:\T.txt", r"E:\T_temp.txt", "DCE.cs2403", "1843.0")

   

(内容由讯飞星火AI生成)

jtwc 发表于 2024-1-7 21:52

wang20 发表于 2024-1-7 21:49
我帮你问了下ai工具
解析:



按照格式 "DCE.cs2403|1843.0|0"

sai609 发表于 2024-1-7 22:02

得把事件脉络背景说一下

Srao 发表于 2024-1-8 15:48

import os

file_path = r"E:\T.txt"# 文件路径
temp_file_path = r"E:\T_temp.txt"# 临时文件路径

# 读取文件内容并存储到字典中
data = {}
with open(file_path, "r") as file:
    for line in file:
      contract, angle, value = line.strip().split("|")
      data = (float(angle), float(value))

# 替换以下变量为您的实际值
合约名字 = "your_contract_name"
日增仓 = {"your_contract_name": "your_daily_increase_value"}

# 检查字典中是否已存在相同的合约名字
if 合约名字 in data:
    current_angle, current_value = data[合约名字]
    # 如果现在日增仓的值大于文件中的值,则更新文件中的值
    if float(日增仓[合约名字]) > current_value:
      data[合约名字] = (float(日增仓[合约名字]), current_value)
      print("合约名字:", 合约名字)
      print("日增仓已更新为:", 日增仓[合约名字])
    else:
      print("合约名字:", 合约名字)
      print("日增仓未更新")
else:
    # 如果合约名字不存在,则按照格式追加写入新的合约名字和日增仓的值和0
    data[合约名字] = (float(日增仓[合约名字]), 0)
    print("合约名字:", 合约名字)
    print("日增仓已写入")

# 将最终的字典内容写入临时文件
with open(temp_file_path, "w") as file:
    for contract, (angle, value) in data.items():
      file.write(f"{contract}|{angle}|{value}\n")

# 替换原始文件
os.replace(temp_file_path, file_path)
print("合约名字和日增仓已写入文件:", file_path)
页: [1]
查看完整版本: 下面py代码如何改?