Transcrição do áudio
Coleguinha, está gravando? Eu não sei cara, por que eu não sei? Calma vocês não vão acreditar. Vou abrir para vocês verem aqui. Cart, desktop, vídeo. Então coleguinha, você não acredita? Estou gravando esse vídeo que você está assistindo? Adivinha? Não estou usando Cantásega, nenhum programa. Estou usando o FFmpeg. Isso aqui é só para selecionar a tela, selecionar qual é o meu microfone. O comando mesmo que gera o vídeo da tela é isso aqui. FFmpeg. Beleza? Da hora né? Espero eu que esteja dando certo porque também não tem um view aqui para eu ver caramba. Cara, quando você sabe fazer script, brinca de fazer script, você na verdade só vai aprender essa fazenda. Essa é verdade. Você vai customizar todo o seu Linux, você vai fazer tudo que tiver que fazer ali, via comando, scripts que você mesmo vai criando. E aí sua vida com o passar dos anos vai ficando mais produtiva. Entende? Basicamente assim. Deixa eu só acompanhar aqui com o H-top. Vamos acompanhar aqui também com o H-top como está o desempenho desse script. Ele está usando bem, está populando bem os núcleos do processador. Está usando a memória considerável, 3.8 GB. Esse Linux aqui, com toda a carga que ele está trabalhando, ele está trabalhando com uma IA, processando uma IA também, está consumindo uma quantidade razoável de memória. Vamos lá trabalhar com Python e PATH de arquivos. Na verdade, se você olhar nós temos um grande problema no mundo que é assim. Se você pega aqui, vamos lá, vamos navegar aqui no Linux. Aqui você vê em CD barra. Essa barra caída assim é a raiz do Linux. No Windows é C 2 pontos, D 2 pontos. O Windows tem muitas raízes, o sistema de arquivos dele. O Linux não, tem só uma raiz no sistema de arquivos. Certo? E aí você navega CD barra home barra user. E parece a barra caidinha assim. Já no Windows é outra barra. Então, sim, isso é um grande problema. Também nós sabemos que o Linux ele é muito chato com relação a diretórios, caminhos, locais onde armazenamos os arquivos. Então você tem que usar o os.path para trabalhar com PATHs. Para que seja resiliente a múltiplas distribuições Linux. Por exemplo, no Debian é barra home barra user, no Windows é barra user com um maiúsculo barra alguma coisa. Então repare que pode mudar. Por exemplo, essa linha 2 está aqui. os.path.expandUser. O que isso aqui vai gerar? Se eu executar isso aqui nesse Linux ele vai retornar isso aqui. ExpandUser. Ah, então, pera aí. Vamos lá. Python 3. Legal? Vamos iniciar o Python 3. Import OS. Então vamos importar o OS. E aí, por exemplo, vou chamar a variável de p de path. Vai ser um caminho. Então, por exemplo, os.path.expandUser. Legal? E aí eu vou virar e vou falar o seguinte. Olha, legal. Aqui no diretório do usuário tem um tal de downloads. E aí eu, pá, gerei. E agora dou um printp. Legal? O que eu fiz aqui, gente? O que eu fiz? Eu peguei, criei uma variável p e joguei, dei um expandUser no path inteiro para ele exibir então nesse Linux downloads desse usuário que está autenticado e logado aqui agora. É esse é o caminho correto. Ah, então nós conseguimos com expandUser fazer com que o teu script rode múltiplas distribuições não só no Debian. E isso é importante, cara. Você nunca sabe quando o seu script vai dar certo. Ou às vezes você brinca, por exemplo, olha, eu fiz o kfishmonger. Cara, começou a ser baixado, cara. Só que a peste só funciona para o Debian. Porque eu chumbei para o Debian. Eu não achei que a bosta ia dar certo e deu. E tem gente que me cobra para eu portar o bugs bugs go, que é um browser, para outros Linux. Cara, então puta merda que eu fiz, entende? Eu chumbei muita coisa. Não achei que ia dar certo. Então, cara, já parta do pressuposto que vai dar certo. Você também pode usar uma biblioteca chamada Phewe do Phef. A biblioteca, na verdade, é Phewe. É tipo a classe do módulo PheweLib. E lá dentro você vai ter o Phewe.Rome. É tipo um estático. Que você puxa e ele te dá o caminho do home. Pode usar das duas formas. Python tem isso, tá? O Python, ele tem múltiplas formas de fazer a mesma coisa. Isso é chato. Bom, o que é os.sep? Olha só, vamos lá, print. os.sep. Ou seja, desse sistema operacional, essa barrinha é o separador. Essa barrinha é o separador. Isso é importante. Quer ver? Vamos lá. Acho que também é importante. Aqui é pegar qual diretório temporário do teu Linux. Cara, import temp file. E agora você dá um print temp file.get tempdir. Ó, barra tmp. Cara, se você utilizar esses módulos e essas bibliotecas, o teu script vai rodar perfeitamente em múltiplas distribuições. No Windows também dá. Quer ver? Quando você pega o tal do Expand User no Windows, ele retornaria assim. Assim. Quer ver? Aqui. Retornaria assim. Legal? Cara, como que você pega o diretório corrente do script que está sendo executado? Isso eu acho escroto. Eu acho que já passou da hora do Python ter uma forma fácil de eu ter que chamar o caminho. Inspec frame. Inspec corrente frame vai retornar o script que está sendo executado aonde estiver sendo executado. E aí você vai pegar o get file. Você vai pegar esse arquivo lá. Legal? Então você com esse arquivo lá você sabe jogar no abs path e pegar o caminho absoluto dele lá onde ele está sendo executado. Então é assim que você pega o diretório corrente da onde está o teu script rodando. Então script path é igual ao spath. abs path. Você vai pegar o inspect get file, inspect corrente frame. Isso aqui deveria ser melhorado. Uma biblioteca nova. Sério. Ou incorporado de alguma forma. Se você quer pegar o diretório do diretório onde está rodando o teu script você pode muito bem pegar. Esse aqui é o script path. Aqui é o dir. Você usou os.path.dname. os.path.dname. Se você colocar um path de um arquivo ele retorna o diretório que está naquele arquivo. Se você colocar aqui em script path outro diretório ele vai retornar o diretório que contém aquele diretório que você entrou com um parâmetro. Cara esse os.path.dname ele é importante. É igual o dirname do PHP. É dir não é do PHP. Não é dirname. Eita não lembro mais. Embolou tudo aqui. Beleza. É assim que você trabalha com path. Como que você manipula arquivos? Manipula arquivos ou SHU2 é a melhor solução. Você tem o OS poderia fazer o copy. Mas na boa o copy o movie você usa o da biblioteca SHU2. SHU2 por exemplo se você tentar fazer um movie. Um movie de um arquivo num disco ou num SSD para outro disco ou outro SSD. Ele não no no no OS. Não vai dar certo. Mas se você usar o SHU2 para fazer esse movie. Dá certo. Então copiar mover remover. Pode usar o SHU2. O OneLink também é um remover. É o OneLink. Você pode usar o OS tanto quanto o SHU2. O AS dá também. Não tem problema não. Foi uma das poucas funções para trabalhar com arquivos que eu nunca tive problema no OS. O resto eu vou para SHU2. Copiar, apendar. SHU2. Como que eu abro um arquivo para leitura. Eu vou abrir esse arquivo mesmo que eu tenho aqui. Nesse próprio arquivo que eu estou aqui. Eu estou onde? Estou na raiva. Não estou no diretório do usuário. Então eu vou fazer como script. Exit. Opa. CD parra tmp. Legal. Estou em tmp. Ls que eu tenho alguns arquivos. Tá boa. Legal. Vou mostrar muita coisa não. Então vamos lá. Nano. Python. Chama isso aqui. Então xaobank. Opa. Usr. Pera aí galera. Python 3. Bom, tem muitas formas de você abrir um arquivo. A forma mais bacana que você pode utilizar aí. Eu vou escrever um arquivo agora. É assim ó. Presta atenção. Open. E aí vou colocar aqui. Não, vou colocar no diretório do usuário. Lp. Test.txt. E aí você coloca. Eu quero abrir ele para escrita. Eu vou escrever nele. Sf. F. Write. E aí eu coloco um texto idiota. Beleza. Então aqui você pode colocar w para escrita, a para apendar, r para ler. Como texto. Como texto. Tá? Como um texto. If. Quando essa estrutura finalizar, ele fecha o arquivo aqui. Então quando chegar nessa linha, o arquivo está fechado e salva. Beleza? Legal. Um x, y, ok. Então um texto idiota. Chm. Mais x, file. Legal. E ponto barra. File. E aí ele não falou nada, porque eu não mandei imprimir nada. Mais cat. Eu chamei de... Eita caramba. Test.x. Cat. Pass. Txt. Tá lá. Um texto idiota escreveu o arquivo. Beleza. Beleza. Preste atenção. Esse arquivo foi escrito como um texto baseado no encoding desse sistema operacional como ele está. Se eu for enviar esse arquivo para outro lugar e tiver acentuação e lá tiver o mesmo encoding, vai dar tudo certo. Se lá tiver um outro encoding, vai dar tudo errado. E isso é um grande problema. Uma outra forma de você trabalhar com arquivos é trabalhar ele de forma binária. Então você vai dizer aqui que ele é do tipo escrita binária. E aqui você vai fazer ponto encode. Ponto encode. E aí você vai colocar o tf8. Você chupa aqui um encode. E aí ele vai fazer essa tua string virar um array de bytes com encode no tf8 e vai escrever. Ctrl x, y, ok. Legal. E agora eu mando executar o BIF de novo. Agora, cat test 2. Você viu aqui, não pareceu algo esquisito, tudo certinho? Por que? Ele está de forma binária no unicode e essa máquina também é o unicode. Então não vai dar problema nenhum. Mas veja, se eu mandasse esse arquivo para outra máquina, um Windows poderia dar problema. Então eu faço com que a escrita seja num encode e eu negocio para que a leitura seja feita na outra ponta pelo mesmo encode. Então eu poderia ler assim, por exemplo. Leitura é igual a, por exemplo, open. Barra tmp test2.txt. Eu vou ler read. Posso fazer assim também. Então eu estou lendo test2 e eu estou lendo print na tela. Então eu estou lendo. Legal. Opa! File or directory not found. É test. Eu chamei de test.txt. Eu fiz merda. Opa! Parecia aquele gremista, né? Está do passarinho lá. Olha lá, um texto idiota. Legal. Pode verificar se o arquivo existe ou não. Não. os.path.exists. Então eu poderia interpretar aqui. If not os.path.exists. Lógico, não jamais colocaria um texto duas vezes assim. Seria muito agambiado. Então se o arquivo não existe, print. Olha, cara, arquivo não existe. Opa! Ah, bom, e aí eu naturalmente morri dali. Um Elds. Então o arquivo não existe, o arquivo existe. Opa! O que eu fiz aqui? Control X, Y, ok. E aí? Ah, esqueci de importar. Oh, deslervo ela. Ha ha ha. Deixa eu ver se eu esqueci de mais nada. Isso aí. Ó, o texto idiota. E o arquivo ali? Naturalmente. Ele existe. Vamos simular aquele programa. Eu teria criado uma variável de um.path. E teria jogado a variável desses dois lugares, não é isso? Ó, o arquivo não existe. Legal, simples. Você verifica. É assim que nós vamos ler, escrever arquivos com Python. Legal. Na próxima aula eu vou falar sobre Subprocess. Espero que essa aula tenha sido gravada assim com sucesso, porque, pô cara, gravar o vídeo via command line FFmpeg é da hora. Ha ha ha. Até mais. Tchau.