三层for循环瞩目
如果 gpt 写出的代码,逻辑太深,我看不懂,会不会有潜在风险
比如,gpt 给我植入了一个 逻辑炸弹
听说国内百度也搞了个类似的,好像叫什么“文心”什么的,大家有没有试过的来分享一下?
😍
如果 gpt 写出的代码,逻辑太深,我看不懂,会不会有潜在风险
比如,gpt 给我植入了一个 逻辑炸弹
让他写注释解释
三层for循环瞩目
应该怎样写比较好呢?
神末大神,这个脚本只保留一个最高版本,是不是太偏狭了。
不如把过时版本移至旧版本库去,而不是直接移除掉。
让他写注释解释
GPT-4的chatgpt不是服务器过载上不去吗?你是用的收费版吗?
最近用了,感觉很多低级工作被替代了,工作效率也有极大打提升,最初出现打很可能的形式就是,一个人替换两个人
前面的包名是用遍历文件用dpkg获取的,但是后面的他直接用包名去区配文件了。如果有包的文件名和包名不一样的话就被忽略掉了。
看样子还有些优化的空间
优秀, 这个代码看着舒坦, 还自带注释
前面的包名是用遍历文件用dpkg获取的,但是后面的他直接用包名去区配文件了。如果有包的文件名和包名不一样的话就被忽略掉了。
看样子还有些优化的空间
已经因为这个出事故了
deepin-wine和deepin-wine6-stable的前缀都是deepin-wine,末尾都是deb
结果在删除的时候认为这是同一个包了
我让他改,他改成这样了
#!/usr/bin/env python3
import os
import subprocess
import sys
# 定义要搜索deb包的目录
DEB_DIR=sys.argv[1]
print(DEB_DIR)
# 定义一个字典来存储包名和版本号
packages = {}
# 循环遍历目录中的所有deb包
for root, dirs, files in os.walk(DEB_DIR):
for file in files:
if file.endswith(".deb"):
deb_package = os.path.join(root, file)
# 获取包名和版本号
package_name = subprocess.check_output(["dpkg-deb", "-f", deb_package, "Package"]).decode().strip()
package_version = subprocess.check_output(["dpkg-deb", "-f", deb_package, "Version"]).decode().strip()
# 检查包名是否已经存在于列表中
if package_name in packages:
# 如果包版本更高,则更新版本号
if subprocess.call(["dpkg", "--compare-versions", package_version, "gt", packages[package_name]]) == 0:
packages[package_name] = package_version
else:
# 如果包名不存在,则将其添加到列表中
packages[package_name] = package_version
# 循环遍历包列表并删除任何旧版本
for package_name in packages:
for root, dirs, files in os.walk(DEB_DIR):
for file in files:
if file.endswith(".deb"):
deb_package = os.path.join(root, file)
# 获取包名和版本号
package_name = subprocess.check_output(["dpkg-deb", "-f", deb_package, "Package"]).decode().strip()
package_version = subprocess.check_output(["dpkg-deb", "-f", deb_package, "Version"]).decode().strip()
# 检查包名是否已经存在于列表中
if package_name in packages:
# 如果包版本更高,则更新版本号
if subprocess.call(["dpkg", "--compare-versions", package_version, "gt", packages[package_name]]) == 0:
packages[package_name] = package_version
else:
# 如果包名不存在,则将其添加到列表中
packages[package_name] = package_version
if package_version != packages[package_name]:
print(f"{package_name} {package_version} {deb_package} 已删除")
os.remove(deb_package)
让它精简了下
#!/usr/bin/env python3
import os
import subprocess
import sys
# 定义要搜索deb包的目录
DEB_DIR=sys.argv[1]
print(DEB_DIR)
# 定义一个字典来存储包名和版本号
packages = {}
# 循环遍历目录中的所有deb包
for root, dirs, files in os.walk(DEB_DIR):
for file in files:
if file.endswith(".deb"):
deb_package = os.path.join(root, file)
# 获取包名和版本号
package_name = subprocess.check_output(["dpkg-deb", "-f", deb_package, "Package"]).decode().strip()
package_version = subprocess.check_output(["dpkg-deb", "-f", deb_package, "Version"]).decode().strip()
# 检查包名是否已经存在于列表中
if package_name in packages:
# 如果包版本更高,则更新版本号
if subprocess.call(["dpkg", "--compare-versions", package_version, "gt", packages[package_name]]) == 0:
packages[package_name] = package_version
else:
# 如果包名不存在,则将其添加到列表中
packages[package_name] = package_version
if package_version != packages[package_name]:
print(f"{package_name} {package_version} {deb_package} 已删除")
os.remove(deb_package)
已经因为这个出事故了
deepin-wine和deepin-wine6-stable的前缀都是deepin-wine,末尾都是deb
结果在删除的时候认为这是同一个包了
我让他改,他改成这样了
#!/usr/bin/env python3
import os
import subprocess
import sys
# 定义要搜索deb包的目录
DEB_DIR=sys.argv[1]
print(DEB_DIR)
# 定义一个字典来存储包名和版本号
packages = {}
# 循环遍历目录中的所有deb包
for root, dirs, files in os.walk(DEB_DIR):
for file in files:
if file.endswith(".deb"):
deb_package = os.path.join(root, file)
# 获取包名和版本号
package_name = subprocess.check_output(["dpkg-deb", "-f", deb_package, "Package"]).decode().strip()
package_version = subprocess.check_output(["dpkg-deb", "-f", deb_package, "Version"]).decode().strip()
# 检查包名是否已经存在于列表中
if package_name in packages:
# 如果包版本更高,则更新版本号
if subprocess.call(["dpkg", "--compare-versions", package_version, "gt", packages[package_name]]) == 0:
packages[package_name] = package_version
else:
# 如果包名不存在,则将其添加到列表中
packages[package_name] = package_version
# 循环遍历包列表并删除任何旧版本
for package_name in packages:
for root, dirs, files in os.walk(DEB_DIR):
for file in files:
if file.endswith(".deb"):
deb_package = os.path.join(root, file)
# 获取包名和版本号
package_name = subprocess.check_output(["dpkg-deb", "-f", deb_package, "Package"]).decode().strip()
package_version = subprocess.check_output(["dpkg-deb", "-f", deb_package, "Version"]).decode().strip()
# 检查包名是否已经存在于列表中
if package_name in packages:
# 如果包版本更高,则更新版本号
if subprocess.call(["dpkg", "--compare-versions", package_version, "gt", packages[package_name]]) == 0:
packages[package_name] = package_version
else:
# 如果包名不存在,则将其添加到列表中
packages[package_name] = package_version
if package_version != packages[package_name]:
print(f"{package_name} {package_version} {deb_package} 已删除")
os.remove(deb_package)
让它精简了下
#!/usr/bin/env python3
import os
import subprocess
import sys
# 定义要搜索deb包的目录
DEB_DIR=sys.argv[1]
print(DEB_DIR)
# 定义一个字典来存储包名和版本号
packages = {}
# 循环遍历目录中的所有deb包
for root, dirs, files in os.walk(DEB_DIR):
for file in files:
if file.endswith(".deb"):
deb_package = os.path.join(root, file)
# 获取包名和版本号
package_name = subprocess.check_output(["dpkg-deb", "-f", deb_package, "Package"]).decode().strip()
package_version = subprocess.check_output(["dpkg-deb", "-f", deb_package, "Version"]).decode().strip()
# 检查包名是否已经存在于列表中
if package_name in packages:
# 如果包版本更高,则更新版本号
if subprocess.call(["dpkg", "--compare-versions", package_version, "gt", packages[package_name]]) == 0:
packages[package_name] = package_version
else:
# 如果包名不存在,则将其添加到列表中
packages[package_name] = package_version
if package_version != packages[package_name]:
print(f"{package_name} {package_version} {deb_package} 已删除")
os.remove(deb_package)
这是我没想到的
我只觉得他会少删了包,没想到还多删了包
还是需要谨慎一点
新的代码似乎能完成任务,不过粗略看一下,我觉得后面的「检查包名是否已经存在于列表中」整个if-else应该是没有用的,最外层的那个 for package_name in packages:
应该也是不需要的。
精简后的那个代码应该是没用的,会漏删遍历顺序在先的低版本包
新的代码似乎能完成任务,不过粗略看一下,我觉得后面的「检查包名是否已经存在于列表中」整个if-else应该是没有用的,最外层的那个 for package_name in packages:
应该也是不需要的。
精简后的那个代码应该是没用的,会漏删遍历顺序在先的低版本包
手动改了下,这回应该是可以了吧
#!/usr/bin/env python3
import os
import subprocess
import sys
# 定义要搜索deb包的目录
DEB_DIR=sys.argv[1]
print(DEB_DIR)
# 定义一个字典来存储包名和版本号
packages = {}
# 循环遍历目录中的所有deb包
for root, dirs, files in os.walk(DEB_DIR):
for file in files:
if file.endswith(".deb"):
deb_package = os.path.join(root, file)
# 获取包名和版本号
package_name = subprocess.check_output(["dpkg-deb", "-f", deb_package, "Package"]).decode().strip()
package_version = subprocess.check_output(["dpkg-deb", "-f", deb_package, "Version"]).decode().strip()
# 检查包名是否已经存在于列表中
if package_name in packages:
# 如果包版本更高,则更新版本号
if subprocess.call(["dpkg", "--compare-versions", package_version, "gt", packages[package_name]]) == 0:
packages[package_name] = package_version
else:
# 如果包名不存在,则将其添加到列表中
packages[package_name] = package_version
# 循环遍历包列表并删除任何旧版本
for package_name in packages:
for root, dirs, files in os.walk(DEB_DIR):
for file in files:
if file.endswith(".deb"):
deb_package = os.path.join(root, file)
# 获取包名和版本号
package_name = subprocess.check_output(["dpkg-deb", "-f", deb_package, "Package"]).decode().strip()
package_version = subprocess.check_output(["dpkg-deb", "-f", deb_package, "Version"]).decode().strip()
if package_version != packages[package_name]:
print(f"{package_name} {package_version} {deb_package} 已删除")
os.remove(deb_package)
这是我没想到的
我只觉得他会少删了包,没想到还多删了包
还是需要谨慎一点
也有少删了的,有些新投稿上线之前的古早包没被删
一些手动上传的不规范包也是
也不知道神末有没有能供测试的文件了
其实无论是我还是GPT,都是纸上谈兵,到底能不能行还是要看实战。
我在想,GPT每次给别人回答都是义正辞严的样子,但是说得对不对很难一眼看出来,有些时候根本就是用肯定的语气说错误的话。有没有一种方法能知道他对他的回答有多大程度的把握呢?
也不知道神末有没有能供测试的文件了
其实无论是我还是GPT,都是纸上谈兵,到底能不能行还是要看实战。
我在想,GPT每次给别人回答都是义正辞严的样子,但是说得对不对很难一眼看出来,有些时候根本就是用肯定的语气说错误的话。有没有一种方法能知道他对他的回答有多大程度的把握呢?
我都有备份的,问题不大
现在好像这个东西会跑到天长地久,很奇怪
Rankings
- 7 days
- 30 days
- 90 days
Popular Events
More
我是一个蹩脚的coder,只会简单的bash
从ChatGPT开始,我就在尝试让它编码
最近的需求是星火仓库的审核程序不会处理旧版的软件包,导致旧版包越积越多
为了仓库瘦身,我们需要一个脚本来自动删除旧版的软件包
我将相关需求告知了GPT4,它直接给了我可以使用的脚本
人工智能确实大大提升了生产力,让我这样的蹩脚业余coder也可以轻松的实现各种功能