यह मेरा मूल प्रश्न है

निम्न स्क्रिप्ट /home/my_files/document1.txt के टेक्स्ट को मेरे क्लिपबोर्ड पर कॉपी करती है।

import pyperclip
path = '/home/my_files/document1.txt'
The_text_of_the_file_that_will_be_copied = open(path, 'r').read()
pyperclip.copy(The_text_of_the_file_that_will_be_copied)

मान लें कि /home/my_files/ में निम्नलिखित पांच दस्तावेज़ हैं:

  • /home/my_files/document1.txt
  • /home/my_files/document2.txt
  • /home/my_files/document3.txt
  • /home/my_files/image1.jpg
  • /home/my_files/image2.png

मैं अपने क्लिपबोर्ड पर /home/my_files/ में तीन टेक्स्ट दस्तावेज़ों में से एक की सामग्री को बेतरतीब ढंग से कॉपी करने के लिए एक स्क्रिप्ट बनाना चाहता हूं।

बेशक निम्नलिखित स्क्रिप्ट काम नहीं करती है, लेकिन यह कुछ मॉड्यूल दिखाती है जिनके साथ मैं प्रयोग कर रहा हूं।

import glob,random,pyperclip
pattern = "*.txt"
path = random.choice((glob.glob(pattern))("/home/my_files/"))
The_text_of_the_file_that_will_be_copied = open(path, 'r').read()
pyperclip.copy(The_text_of_the_file_that_will_be_copied)

क्या आपके पास मेरे लिए कोई प्रासंगिक सुझाव हैं?

मैंने उपरोक्त सामग्री को अपने मूल प्रश्न में जोड़ा है

जब मैंने निम्नलिखित समाधान की कोशिश की जो @ जैकब ली ने बनाया ...

import glob
import random
import pyperclip

files = [os.path.abspath(f) for f in glob.glob("./home/my_files")]
path = random.choice(files)
with open(path) as f:
    pyperclip.copy(f.read())

मुझे निम्न त्रुटि संदेश प्राप्त हुआ ...

Traceback (most recent call last):
  File "abc.py", line 3, in <module>
    path = random.choice(glob.glob(pattern))
  File "/usr/lib/python3.8/random.py", line 290, in choice
    raise IndexError('Cannot choose from an empty sequence') from None
IndexError: Cannot choose from an empty sequence

किसी और ने मुझे निम्नलिखित स्क्रिप्ट का सुझाव दिया ...

import glob,random,pyperclip
pattern = "/home/my_files/*.txt"
path = random.choice(glob.glob(pattern))
print("copying contents of ", path)
The_text_of_the_file_that_will_be_copied = open(path, 'r').read()
pyperclip.copy(The_text_of_the_file_that_will_be_copied)

लेकिन वह स्क्रिप्ट भी काम नहीं करती है। जब मैंने उस स्क्रिप्ट को चलाया तो मुझे निम्न त्रुटि मिली ...

Traceback (most recent call last):
  File "abc.py", line 3, in <module>
    path = random.choice(glob.glob(pattern))
  File "/usr/lib/python3.8/random.py", line 290, in choice
    raise IndexError('Cannot choose from an empty sequence') from None
IndexError: Cannot choose from an empty sequence

मैं उलझन में हूं।

3
Tiel 16 अप्रैल 2021, 17:11

2 जवाब

सबसे बढ़िया उत्तर

निम्नलिखित सफलतापूर्वक एक यादृच्छिक पाठ फ़ाइल की संपूर्ण सामग्री को /home/my_files/ में मेरे क्लिपबोर्ड पर कॉपी करता है

import glob,random,pyperclip
pattern = "/home/my_files/*.txt"
path = random.choice(glob.glob(pattern))
print("copying contents of ", path)
The_text_of_the_file_that_will_be_copied = open(path, 'r').read()
pyperclip.copy(The_text_of_the_file_that_will_be_copied)

@Asocia . को धन्यवाद

उपरोक्त स्क्रिप्ट सही ढंग से काम करने पर जोर देने के लिए @Asocia को धन्यवाद। मुझे नहीं पता कि मैं क्या गलत कर रहा था, लेकिन मैं कुछ गलत कर रहा होगा जब मैंने संकेत दिया कि ऊपर दी गई स्क्रिप्ट ठीक से काम नहीं कर रही है।

1
Tiel 18 अप्रैल 2021, 10:36

जब आप इस पंक्ति में path असाइन करने का प्रयास करते हैं तो आप कोड एक TypeError: 'list' object is not callable अपवाद उठाते हैं:

path = random.choice((glob.glob(pattern))("/home/my_files"))

glob.glob() एक सूची देता है (संभवतः खाली)। (साथ ही, आप glob.glob() कॉल को निरर्थक कोष्ठकों में रखते हैं।) फिर, आप glob.glob()("/home/my_files/") (संक्षेप में, [...]() को कॉल करने का प्रयास करते हैं, TypeError अपवाद को बढ़ाते हुए।

import glob
import random
import pyperclip

files = [os.path.abspath(f) for f in glob.glob("./home/my_files/*.txt")]
path = random.choice(files)
with open(path) as f:
    pyperclip.copy(f.read())
0
Jacob Lee 17 अप्रैल 2021, 03:44