类unbuntu下sh文件调用.py文件始终不执行
本帖最后由 1e3e 于 2022-2-22 12:22 编辑写了一个py脚本如下:
#!/usr/bin/python
import time
import os
t=time.gmtime()
shijian=time.strftime("%Y%m%d",t)
def ListFilesToTxt(dir, file, wildcard, recursion):
exts = wildcard.split(" ")
files = os.listdir(dir)
for name in files:
fullname = os.path.join(dir, name)
if (os.path.isdir(fullname) & recursion):
ListFilesToTxt(fullname, file, wildcard, recursion)
else:
for ext in exts:
if (name.endswith(ext)):
file.write(name + "-" + shijian + "\n")
break
def Test():
dir = "/home/asd/Downloads/qq-files/隐私隐去/file_recv"# 文件路径
outfile = "/home/asd/Downloads/qq-files/隐私隐去/file_recv/目录/用来查找文件.txt"# 写入的txt文件名
wildcard = ".jpg .pdf"# 要读取的文件类型;
file = open(outfile, "a")
if not file:
print("cannot open the file %s for writing" % outfile)
ListFilesToTxt(dir, file, wildcard, 1)
file.close()
Test()
另外写了一个sh脚本:
#!/bin/bash
cd/home/asd/Downloads/qq-files/隐私隐去/file_recv/
dirdate=`date +%Y%m%d`_`date +%H%M%S`
mkdir $dirdate
cd $dirdate
zippdf.zip/home/asd/Downloads/qq-files/隐私隐去/file_recv/*.pdf -P 123
zipjpg.zip/home/asd/Downloads/qq-files/隐私隐去/file_recv/*.jpg-P 123
python /home/asd/test/bak.py
rm -f /home/asd/Downloads/qq-files/隐私隐去/file_recv/*.jpg/home/asd/Downloads/qq-files/隐私隐去/file_recv/*.pdf
rmdir -p --ignore-fail-on-non-empty /home/asd/Downloads/qq-files/隐私隐去/file_recv/*
rsync -r --include=*.xlsx --include=*.xls --include=*.zip --include=*.ppt --include=*用来查找文件* --include=*.doc --include=*.docx--include=*.wps --include=*.et--filter="-! */"/home/asd/Downloads/qq-files/隐私隐去/file_recv /data/testest
我在终端中执行“python /home/asd/test/bak.py”成功执行,成功生成/home/asd/Downloads/qq-files/隐私隐去/file_recv/目录/用来查找文件.txt,但在sh脚本中加入“python /home/asd/test/bak.py”语句始终不能执行,
求大佬解答或者大佬们不用python语言,直接sh脚本解决也可 没人吗?大佬呢?自己顶一下 你把sh执行的输出贴出来,我好分析。
>>> str
<class 'str'>
>>> dir
<built-in function dir>
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
>>>
dir是个函数名。是冲突了。 s1986q 发表于 2022-2-22 12:33
你把sh执行的输出贴出来,我好分析。
>>> str
已经说的很清楚了,sh内容如下:
#!/bin/bash
cd/home/asd/Downloads/qq-files/隐私隐去/file_recv/
dirdate=`date +%Y%m%d`_`date +%H%M%S`
mkdir $dirdate
cd $dirdate
zippdf.zip/home/asd/Downloads/qq-files/隐私隐去/file_recv/*.pdf -P 123
zipjpg.zip/home/asd/Downloads/qq-files/隐私隐去/file_recv/*.jpg-P 123
rm -f /home/asd/Downloads/qq-files/隐私隐去/file_recv/*.jpg/home/asd/Downloads/qq-files/隐私隐去/file_recv/*.pdf
rmdir -p --ignore-fail-on-non-empty /home/asd/Downloads/qq-files/隐私隐去/file_recv/*
rsync -r --include=*.xlsx --include=*.xls --include=*.zip --include=*.ppt --include=*用来查找文件* --include=*.doc --include=*.docx--include=*.wps --include=*.et--filter="-! */"/home/asd/Downloads/qq-files/隐私隐去/file_recv /data/testest
以上sh脚本内容全部正常执行!!!!!!!
加上python /home/asd/test/bak.py这句后,除了python /home/asd/test/bak.py没起作用,其它语句执行正常!!!!!
s1986q 发表于 2022-2-22 12:33
你把sh执行的输出贴出来,我好分析。
>>> str
实在 不行,你帮我远程一下电脑吧 一般这种情况用 pyinstaller 打包成二进制运行。或者使用shell的多进程机制调用 python 的命令行 1、sh中引入path,把当前用户echo $PATH看到的结果都引入
2、bash -x你的sh脚本
这样执行看看。
应当是环境变量没有带过来。 本帖最后由 s1986q 于 2022-2-22 14:27 编辑
你的变量值中文很多,我试过,就没输出。
最前面的没删,你把所有dir变量换了,就好了。 大概率是环境变量问题
python /home/asd/test/bak.py这个 python 用绝对路径试试,类似于:/usr/bin/python /home/asd/test/bak.py zheng10072 发表于 2022-2-22 15:02
大概率是环境变量问题
python /home/asd/test/bak.py这个 python 用绝对路径试试,类似于:/usr/bin/pyt ...
右键终端 输入python /home/asd/test/bak.py ,执行结果是正常的,有点不解