社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

tripleee

tripleee 最近创建的主题
tripleee 最近回复了
3 年前
回复了 tripleee 创建的主题 » 反复编辑python脚本文件[重复]

您可以从中的命令行轻松访问字符串参数 sys.argv (出于历史原因, sys.argv[0] 包含脚本本身的名称,所以忽略它。

import sys

for AA_seq in sys.argv[1:]:
    value={"V": 3.1,"Y":3.5,"W":4.7,"T" :5.3,"S":5.1,"P":3.7,
"F":4.7,"M":1.5,"K":8.9,"L":6,"I":4.3,"H":3.3,"G":7.1,
"E":7,"Q":5.4,"C":0.6,"D":7.6,"N":6,"R":8.7,"A":3.4}
    print("Total length of sequence", AA_seq, "is:", len(AA_seq))
    for i in AA_seq:
        sum+=value[i]
    print(AA_seq, "Total Score is :", sum)

你会注意到我添加了一个循环,这样你就可以在一次运行中处理多个序列。

接受来自命令行的输入使您能够使用shell的各种功能(制表符完成、历史记录、变量扩展等),以及从其他脚本以编程方式使用此脚本。

5 年前
回复了 tripleee 创建的主题 » 如何在Python脚本中将Perl修改的内容写入文件?

恐怕您的Perl脚本编写技能也有点有限。无论如何,这都很容易在Python中实现。

import re

new_dat_file = "14689_bondlength.prmfrm.dat"
new_csv_file = "14689_bondlength.prmfrm.csv"
with open(new_dat_file) as input, open(new_csv_file, 'w') as output:
    for line in input:
        line = line.rstrip('\n')
        line = re.sub(r'\\t\s+|\s+', ',', line)
        # line = line.replace(',FRAM', r'\\nFRAM')
        output.write(line + '\n')

\\t 是反斜杠和小写 t ,鉴于 \t 表示选项卡。

FRAM .

如果你真的,真的想用一个外部的过程,我会

import subprocess

with open(new_dat_file) as input, open(new_csv_file, 'w') as output:
    subprocess.run(['perl', '-p', '-e', 's/\\t\s+|\s+/,/g; s/,FRAM/\\nFRAM/g'],
    stidin=input, stdout=output, check=True)

也许和上面一样,切换到 perl -l

6 年前
回复了 tripleee 创建的主题 » python3通过分隔符将大文件拆分为小文件(不是大小、行)

如果输入文件很大,将整个文件读入内存,然后分割内存区域是非常低效的。请改为:

with open('test-file.yml', 'r') as myfile:
    opfile = None
    cntr = 1
    for line in myfile:
        if line == '-\n':
            if opfile is not None:
                opfile.close()
            opfile = open('{0}.md'.format(cntr),'w')
            cntr += 1
        opfile.write(line)
    opfile.close()

close 你打开的东西 with 上下文管理器;上下文管理器的目的就是为您解决这个问题。

5 年前
回复了 tripleee 创建的主题 » 检查输入python regex的有效性

表达 \.{3} 匹配三个文字点。想必你想要 \.[a-z]{3}$

对于主机名部分, [a-z] 显然不包括数字;尝试 [a-z0-9] .

这样做没有什么特别的好处 compile 在regex上你会立刻扔掉。

def is_email_valid(email):
  return re.match(r"[a-zA-Z0-9_-]+@[a-z0-9]+\.[a-z]{3}$", email)

如果您想接受子域(您可能应该接受),可以添加一个repeat,如 ([a-z0-9]+\.)+ 之后 @ ,在 [a-z]{3}$ .

对于许多有效的电子邮件地址,您的条件过于严格,将接受许多无效的电子邮件地址。一般来说,使用regex验证电子邮件地址是一个有缺陷的想法,特别是如果您的有效性标准完全是临时的。

不管怎样,这会因为不同的原因拒绝我的首选、备份和第三级电子邮件地址。

6 年前
回复了 tripleee 创建的主题 » Python:如何分离函数read file和显示用户输入

我是 猜测 你在找这样的东西。将CSV读入 dict 其中,每个键是一个大学名,值是一个联系人列表(作为字符串)。然后有一个单独的函数选择要从该dict打印的内容。

import csv
import logging

def read_university_contacts(filename):
    """
    Read CSV file into a dict and return it.
    """
    with open(filename, mode='r') as csv_file:
        csv_reader = csv.DictReader(csv_file)
        university_contacts = dict()
        for line_count, row in enumerate(csv_reader, 1):
           if line_count == 1:
                # Not sure why you have this, skip header?
                #continue
                pass
           university = row["UniversityName"]
           contact = row["ContactName"]
           if university not in university_contacts:
               university_contacts[university] = [contact]
           else:
               university_contacts[university].append(contact)
    # Use logging for diagnostics
    logging.info(f'Processed {line_count} lines')
    # Return the structure we read
    return university_contacts    

def main():
    logging.basicConfig(level=logging.INFO, format='%(module)s:%(asctime)s:%(message)s')
    contacts = read_university_contacts("List.txt")

    while True:
        try:
            print("1. University")
            print("2. Contact Name")
            choice = input()
            choice = int(choice)
            break
        except ValueError:
            logging.warning("Unexpected error.")

    # Don't compare to string; you converted to int() above
    if choice == 1:
        print(list(contacts.keys()))
    elif choice == 2:
        print(list(contacts.values()))
    else:
        raise ValueError("Invalid option selected")


if __name__ == "__main__":
    main()
5 年前
回复了 tripleee 创建的主题 » 不带打印的python打印

对…的呼唤 input() 包括 message 在它的提示下。

字符串的添加在python中连接它们。 "ab" + "cd" 生产 "abcd" 是的。同样地, message += "stuff" 添加 "stuff" 到变量早期值的末尾。如果是以前的空字符串, "" + "stuff" 生产简单 “东西” 是的。

操作员 += 是增量赋值; a += b a = a + b . (有些人也不喜欢较长的表达式,因为它在数学上是不可信的,除非至少有一个值是零;但是 = 在python的其他地方也没有数学语义。)

6 年前
回复了 tripleee 创建的主题 » 使用newline和linux mail命令通过pythons子进程发送邮件

你真的想避免各种引用巴尔马答案的问题。如果您的python足够新,您需要

send = subprocess.call(
    ['mail', '-s', subject, '-r', fromAddr, toAddr],
    input=body, text=True)

在Python3.7之前,您需要替换 text=True 更老,更不清楚的别名 universal_newlines=True . 这个 input 参数可能是在Python3.3中引入的。有关如何在较旧版本中执行类似操作的IDA以及更详细的讨论,请参见 Running Bash commands in Python

7 年前
回复了 tripleee 创建的主题 » 如何在python子进程中运行bash函数?[复制品]

建议的解决方案是 使用 定义功能的别名 唯一地 对于交互使用(甚至在那时,shell函数在许多方面都是优越的)。

将别名重构为一个独立的脚本,并像任何其他外部命令一样调用它。

更详细地说,如果你有

alias myalias='for x in foo bar baz; do
    frobnicate "$x"; done'

您可以通过将它转换为一个函数来改进它,这样它就不会污染您的全局命名空间

myalias () {
    local x
    for x in foo bar baz; do
        frobnicate "$x"
    done
}

或者把它保存为 /usr/local/bin/myalias chmod a+x /usr/local/bin/myalias 使之对每个人都可执行;

#!/bin/sh
for x in foo bar baz; do
    frobnicate "$x"
done

(这在子进程中运行,因此 x 脚本完成后就消失了,所以我们不需要 local )

(当然,如果 frobnicate 写得很好,也许你可以简化为 frobnicate foo bar baz 同样如此。

这是常见的常见问题。

6 年前
回复了 tripleee 创建的主题 » python文本处理:从单个单词中识别名词

你可以在单个片段上运行pos标记器,它的精确度会更低,但我想这已经是给定的了。

理想情况下,找到一个pos标记符,它可以显示所有可能的读数,以便以后在处理流程中消除语法歧义。这基本上就是从字典中挑选出所有可能的阅读材料(也许是有可能的),然后让你从中获取。

10 年前
回复了 tripleee 创建的主题 » 如何从python与终端通信?[复制品]

您可以删除 -e :

os.system("gnome-terminal 'sudo apt-get update'")
6 年前
回复了 tripleee 创建的主题 » 如何在同一个python程序中将python变量传递给bash代码?

在贝壳里玩耍看起来很尴尬,为什么不干脆:

def check_file_exists_in_hadoop(loc):
    path = "/somedirectory/inhadoop/" + loc
    res = subprocess.run(["hadoop", "fs", "-test", "-d", path])
    return res.returncode == 0

您可以执行为:

if check_file_exists_in_hadoop('foo.txt'):
    print("Yay!!!!")
else:
    print("Oh noes!!!!")

在类unix系统中执行/运行进程/程序时,它会收到一组参数(例如, sys.argv 在python中)。你可以用不同的方法来构造它们,但是把它们传递给 run 给你最直接的控制。当然可以使用shell来执行此操作,但仅启动shell来执行此操作似乎没有必要。假设这个参数列表只是python中字符串的列表,那么可以使用普通的list/string操作来构造所需的任何内容。

使用shell可能很有用,但正如gilles所说,您需要小心地清理/逃避您的输入,并不是每个人都喜欢 little bobby tables !

6 年前
回复了 tripleee 创建的主题 » android应用连接mysql数据库的登录状态验证

升级至React Native 0.58.5或更高版本。 他们有 includeSubdomain 在RN0.58.5的配置文件中。

ChangeLog

在RN0.58.5中,他们宣布 network_security_config 和他们的服务器域。网络安全配置允许应用程序允许来自特定域的明文通信。所以不需要付出额外的努力 android:usesCleartextTraffic="true" 在清单文件的应用程序标记中。升级rn版本后将自动解决此问题。