8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

python shell 无法识别任何命令。python 命令在 anaconda shell 中运行

Sefa Dedeoglu 2月前

288 0

我在 python shell 中尝试的每个命令都不起作用。我使用 python shell 的方式错误吗?我使用的是 python 3.12.3,但版本无关紧要。我尝试过早期版本的 python,但那...

我在 python shell 中尝试的每个命令都不起作用。我使用 python shell 的方式错误吗?我使用的是 python 3.12.3,但版本无关紧要。我尝试过早期版本的 python,但也没有用。当我使用 anaconda shell 时,所有命令都被接受。

我尝试了所有能找到的命令。我复制粘贴或输入命令,但 Python 无法识别这些命令。我总是得到一个语法错误

py -m venv .venv,返回文件 \'\',第 1 行 py -m venv .venv^^^^ SyntaxError:语法无效

我希望创建一个虚拟环境

帖子版权声明 1、本帖标题:python shell 无法识别任何命令。python 命令在 anaconda shell 中运行
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Sefa Dedeoglu在本站《shell》版块原创发布, 转载请注明出处!
最新回复 (0)
  • OP 被标记为 bash .

    如果您正在使用 bash 并且不需要担心可移植性,那么几乎没有理由使用 test (或 [ 的习惯 [[ ... ]] (并且而不是 expr let ,更喜欢 (( ... )) 进行算术评估。)

    请参阅 条件构造

    在 CLI 上, test 不会更改上下文因此 \'globs\' ( * ) 将使用文件名扩展进行处理,并替换为所有匹配项的列表,这会生成过多的参数 test .

    在 中有很多方法可以检查字符串和文件 bash ,有些方法会重叠。正如评论中提到的, [[ case 构造都将使用通配符,而无需进行分词或路径名扩展。

    鉴于 f=fofo.l x=abcd ,

    $: dotl(){ [[ $1 == *.l* ]] && echo match || echo nope; }
    $: dotl $f
    match
    $: dotl $x
    nope
    
    $: dotl(){ case $1 in *.l*) echo match;; *) echo nope;; esac; }
    $: dotl $f
    match
    $: dotl $x
    nope
    

    如果你更喜欢实际的正则表达式 -

    $: dotl(){ [[ $1 =~ [.]l ]] && echo match || echo nope; }
    $: dotl $f
    match
    $: dotl $x
    nope
    

    如果您需要可移植性,并且高性能不是主要关注点,那么有很多广泛可用的程序可供您进行测试 - 这 grep 是此类事情的通常选择。

    $: dotl(){ echo $1 | if grep -q '[.]l'; then echo match; else echo nope; fi; }
    $: dotl $f
    match
    $: dotl $x
    nope
    

    参数扩展 来做这样的“技巧” (尽管我一般不推荐这样做):

    $: dotl(){ local tst=${1/#*.l*/}; echo "$1 contains ${tst:+NO }.l"; }
    $: dotl fofo.l
    fofo.l contains .l
    $: dotl ooo.lala
    ooo.lala contains .l
    $: dotl abcd
    abcd contains NO .l
    

    也许这是一个 X/Y 问题 ,而您要问如何判断一个文件是否具有给定的字符串,因为您计划遍历所有文件并对每个文件执行某些操作(如果匹配)-所以您真正想要的是匹配的文件列表,而不是对每个文件进行测试。

    为此,glob 可以一次性处理所有事情:

    $: touch fofo.l ooo.lala abcd
    
    $: echo *
    abcd fofo.l ooo.lala
    
    $: echo "Files with '.l':" *.l*
    fofo.l ooo.lala
    
    $: for f in *.l*; do echo ${f^^}; done
    FOFO.L
    OOO.LALA
    

    再从另一个角度来看,也许查找表会有所帮助。

    $: . <( lst=(*.l*); shopt -s patsub_replacement; echo "declare -A lookup=(${lst[@]//*/[&]=1})" )
    $: declare -p lookup # lst inside is scoped to the subshell; use outside to keep
    declare -A lookup=([ooo.lala]="1" [fofo.l]="1" )
    
    $: echo "There are ${#lookup[@]} Files with '.l': ${!lookup[@]}"
    There are 2 Files with '.l': ooo.lala fofo.l
    
    $: for f in *; do [[ -n "${lookup[$f]}" ]] && echo "$f contains .l" || echo "$f does not contain .l"; done
    abcd does not contain .l
    fofo.l contains .l
    ooo.lala contains .l
    

    只需确保针对一些最奇怪和最不可能 实际 发生的用例来测试您选择的方法。文件名 可以 包含嵌入空格,甚至包括换行符、回车符和/或控制字符,如退格符、铃声或文件结尾标记。

返回
作者最近主题: