好友
阅读权限10
听众
最后登录1970-1-1
|
40吾爱币
本帖最后由 kaijie117 于 2025-2-16 08:58 编辑
[Asm] 纯文本查看 复制代码 def CopyConfig(self,WebName):
Newpath=self.WorkPath+'/'+WebName+'/'
shutil.copy(self.WorkPath+'/main.exe',Newpath)
shutil.copy(self.WorkPath+'/config.yaml',Newpath)
def read_yaml_all(self,WebName):
try:
with open(self.WorkPath+'/'+WebName+'/'+'config.yaml','r',encoding='utf-8') as file:
data=yaml.load(file,Loader=yaml.FullLoader)
return data
except:
return None
def ChangeYaml(self,WebName):
old_data=self.read_yaml_all(WebName)
old_data['key']=WebName
old_data['input']=WebName+'.csv'
old_data['output']=WebName+'_out.csv'
with open(self.WorkPath+'/'+WebName+'/'+'config.yaml','w',encoding='utf-8') as file:
yaml.dump(old_data,file,sort_keys=True,allow_unicode=True)
return
def OpenEXE(self,WebName):
# event = threading.Event()
# event.wait(5)
ExePath=self.WorkPath+'\\'+WebName+'\\'+'main.exe'
print(ExePath)
os.startfile(ExePath)
self.path 是用os.getcwd()获取的.py当前运行路径
我将yaml文件和EXE批量复制到了子文件夹中,用于后续的批处理运行
使用yaml.load读取文件内容, yaml.dump 修改文件内容
后面调用了子目录下的EXE,该EXE在默认手动启动的情况下,是读取EXE运行目录的下yaml文件内容
结果出现读取的yaml文件内容还是未修改的内容
已做的检查:
1.EXE运行的路径正确
2.yaml已被修改
3.单独运行该EXE正常读取子目录下的yaml文件
怀疑原因:
1.os.startfile调用的EXE,判断路径还是在.py代码运行的路径下,而不是子目录
2.在.py运行中,yaml内容保存在缓存中,调用EXE时,读取的是缓存中的旧内容
请大佬能帮忙提供个解决方案 |
最佳答案
查看完整内容
返回的是你当前的工作目录而非文件的目录,如果你的 exe 中也是使用同样的方法读取 yaml,那么获取到的就是你当前的工作目录即 self.WorkPath
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|
|