python3 如何调用另一个.py

卧枝惠中天 2019-05-18 04:59:29
写了一个库存管理系统,数据都是放在excel的,现在学了点mysql,准备把数据全部导入到mysql,
但是发现一个问题,现有的库存管理系统是一个.py文件从头执行到尾,非常不利于代码的升级维护。
所以想把数据处理的每一步骤都拆分了,这时遇到问题了,拆分出来的代码不知道如何调用。
回顾下自己写的,400行代码从头到尾都是直接执行,从来没def过一个函数(坏习惯)
也百度了调用的方式方法,但是没能够很好地理解。

所以想举个例子:
比如,我现在有两个.py文件(test1.py和test2.py)
test1.py如下

#打开已有工作簿(支持绝对路径和相对路径)
import xlwings as xw
app = xw.App(visible=True,add_book=False)
#visible是否可见,add_book是否新建工作簿
wb = app.books.open(r'E:\Python\hby\库存管理(自动化).xlsm')
xxxxxxxxxxxxxxxxxxx
yyyyyyyyyyyyyyyyyy
。。。
。。。
n行
。。。
。。。

########分割线########
test2.py如下

#对写入vbasheet的内容进行检查

import win32api,win32con,os

#A列B列与C列的件数check
if check_rowsA != check_rowsB: #如果件数不一致,就弹窗提醒,并暂停程序
win32api.MessageBox(0, "A列与B列件数不一致", "提醒",win32con.MB_OK)
os.system("pause");

if check_rowsB != check_rowsC: #如果件数不一致,就弹窗提醒,并暂停程序
win32api.MessageBox(0, "B列与C列件数不一致", "提醒",win32con.MB_OK)
os.system("pause");

#E列不为“请修正”
check_d = 1
while check_d <= check_rowsB:
if wb.sheets['vba'].range(f'e{check_d}:e{check_d}').value == "请修正":
win32api.MessageBox(0, "请修正E列数据", "提醒",win32con.MB_OK)
os.system("pause");
check_d += 1



问题1:test1.py调用test2.py该如何写?在test1.py的xxxxxxxxxxxxxxxxxxx地方接着执行test2.py,执行完之后继续执行yyyyyyyyyyyyyyyyyy开始的后面的代码。
问题2:test2.py又用到了excel,是否在test2.py中需要再次[import xlwings as xw]
还望大神指导一下,谢谢!
...全文
5379 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
卧枝惠中天 2019-05-24
  • 打赏
  • 举报
回复
引用 4 楼 zhegecsdn 的回复:
你看能不能把test2里的代码封装成函数,在test1里import进去,要用的时候直接调用那个函数就行
嗯嗯。谢谢!已经搞定了。就是用的这个方法。 现在把之前的代码分块都用函数写了,就是现在还没搞懂类的使用。正在研究。。。
zhegecsdn 2019-05-24
  • 打赏
  • 举报
回复
你看能不能把test2里的代码封装成函数,在test1里import进去,要用的时候直接调用那个函数就行
卧枝惠中天 2019-05-19
  • 打赏
  • 举报
回复
引用 1 楼 萌新自学python中 的回复:
试试exec(open('module.py').read()) 或者 Import os os.system() 要注意两个.py不要有相同的产量,会被覆盖的。 最好还是花时间重构一下代码,用def()和Class() 楼主也是做供应链吗,同行
谢谢。我研究一下,之前的代码坑太多,当时只是为了实现机能,所以要用什么学什么,没有很系统地学。
  • 打赏
  • 举报
回复
引用 1 楼 萌新自学python中 的回复:
试试exec(open('module.py').read()) 或者 Import os os.system() 要注意两个.py不要有相同的产量,会被覆盖的。 最好还是花时间重构一下代码,用def()和Class() 楼主也是做供应链吗,同行
不要用相同的变量……
  • 打赏
  • 举报
回复
试试exec(open('module.py').read()) 或者 Import os os.system() 要注意两个.py不要有相同的产量,会被覆盖的。 最好还是花时间重构一下代码,用def()和Class() 楼主也是做供应链吗,同行

37,743

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • WuKongSecurity@BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧