1e3e 发表于 2022-2-22 11:33

类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脚本解决也可

1e3e 发表于 2022-2-22 11:42

没人吗?大佬呢?自己顶一下

s1986q 发表于 2022-2-22 12:33

你把sh执行的输出贴出来,我好分析。
>>> str
<class 'str'>
>>> dir
<built-in function dir>
>>> dir()
['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
>>>
dir是个函数名。是冲突了。

1e3e 发表于 2022-2-22 12:45

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没起作用,其它语句执行正常!!!!!

1e3e 发表于 2022-2-22 12:56

s1986q 发表于 2022-2-22 12:33
你把sh执行的输出贴出来,我好分析。
>>> str



实在 不行,你帮我远程一下电脑吧

qqLinux 发表于 2022-2-22 13:32

一般这种情况用 pyinstaller 打包成二进制运行。或者使用shell的多进程机制调用 python 的命令行

jixuewen 发表于 2022-2-22 13:54

1、sh中引入path,把当前用户echo $PATH看到的结果都引入
2、bash -x你的sh脚本
这样执行看看。
应当是环境变量没有带过来。

s1986q 发表于 2022-2-22 14:20

本帖最后由 s1986q 于 2022-2-22 14:27 编辑

你的变量值中文很多,我试过,就没输出。
最前面的没删,你把所有dir变量换了,就好了。

zheng10072 发表于 2022-2-22 15:02

大概率是环境变量问题
python /home/asd/test/bak.py这个 python 用绝对路径试试,类似于:/usr/bin/python /home/asd/test/bak.py

1e3e 发表于 2022-2-22 15:10

zheng10072 发表于 2022-2-22 15:02
大概率是环境变量问题
python /home/asd/test/bak.py这个 python 用绝对路径试试,类似于:/usr/bin/pyt ...

右键终端 输入python /home/asd/test/bak.py ,执行结果是正常的,有点不解
页: [1] 2 3 4
查看完整版本: 类unbuntu下sh文件调用.py文件始终不执行